home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / 8080bw.c < prev    next >
C/C++ Source or Header  |  2000-05-22  |  171KB  |  4,282 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /*  8080bw.c                                                                */
  4. /*                                                                          */
  5. /*  Michael Strutts, Nicola Salmoria, Tormod Tjaberg, Mirko Buffoni         */
  6. /*  Lee Taylor, Valerio Verrando, Marco Cassili, Zsolt Vasvari and others   */
  7. /*                                                                          */
  8. /*                                                                          */
  9. /*  Notes:                                                                    */
  10. /*  -----                                                                    */
  11. /*                                                                          */
  12. /*  - "The Amazing Maze Game" on title screen, but manual, flyer,            */
  13. /*    cabinet side art all call it just "Amazing Maze"                        */
  14. /*                                                                             */
  15. /*  - Desert Gun is also known as Road Runner                                */
  16. /*                                                                             */
  17. /*  - Space Invaders Deluxe still says Space Invaders Part II,                 */
  18. /*    because according to KLOV, Midway was only allowed to make minor         */
  19. /*      modifications of the Taito code.  Read all about it here:             */
  20. /*    http://www.klov.com/S/Space_Invaders_Deluxe.html                        */
  21. /*                                                                          */
  22. /*                                                                            */
  23. /*  To Do:                                                                    */
  24. /*  -----                                                                    */
  25. /*                                                                             */
  26. /*  - 4 Player Bowling has an offscreen display that show how many points     */
  27. /*      the player will be rewarded for hitting the dot in the Flash game.    */
  28. /*                                                                             */
  29. /*  - Space Invaders Deluxe: overlay                                        */
  30. /*                                                                            */
  31. /*  - Space Encounters: 'trench' circuit                                     */
  32. /*                                                                            */
  33. /*  - Phantom II: verify clouds                                                 */
  34. /*                                                                            */
  35. /*  - Helifire: wave and star background                                    */
  36. /*                                                                            */
  37. /*  - Sheriff: overlay/color PROM                                            */
  38. /*                                                                          */
  39. /*                                                                          */
  40. /*  Games confirmed not use an overlay (pure black and white):                */
  41. /*  ---------------------------------------------------------                */
  42. /*                                                                          */
  43. /*  - 4 Player Bowling                                                        */
  44. /*                                                                          */
  45. /****************************************************************************/
  46.  
  47. #include "driver.h"
  48. #include "vidhrdw/generic.h"
  49. #include "cpu/i8039/i8039.h"
  50.  
  51. /* in machine/8080bw.c */
  52.  
  53. WRITE_HANDLER( invaders_shift_amount_w );
  54. WRITE_HANDLER( invaders_shift_data_w );
  55. READ_HANDLER( invaders_shift_data_r );
  56. READ_HANDLER( invaders_shift_data_rev_r );
  57. READ_HANDLER( invaders_shift_data_comp_r );
  58. int  invaders_interrupt(void);
  59.  
  60. READ_HANDLER( boothill_shift_data_r );
  61.  
  62. READ_HANDLER( spcenctr_port_0_r );
  63. READ_HANDLER( spcenctr_port_1_r );
  64.  
  65. /* in sndhrdw/8080bw.c */
  66.  
  67. void init_machine_invaders(void);
  68. void init_machine_invad2ct(void);
  69. void init_machine_sheriff(void);
  70. void init_machine_gunfight(void);
  71. void init_machine_boothill(void);
  72. void init_machine_helifire(void);
  73. void init_machine_ballbomb(void);
  74. void init_machine_seawolf(void);
  75. void init_machine_desertgu(void);
  76. void init_machine_schaser(void);
  77. void init_machine_polaris(void);
  78.  
  79. WRITE_HANDLER( sheriff_sh_p2_w );
  80. READ_HANDLER( sheriff_sh_p1_r );
  81. READ_HANDLER( sheriff_sh_p2_r );
  82. READ_HANDLER( sheriff_sh_t0_r );
  83. READ_HANDLER( sheriff_sh_t1_r );
  84.  
  85. extern struct SN76477interface invaders_sn76477_interface;
  86. extern struct Samplesinterface invaders_samples_interface;
  87. extern struct SN76477interface invad2ct_sn76477_interface;
  88. extern struct Samplesinterface invad2ct_samples_interface;
  89. extern struct DACinterface sheriff_dac_interface;
  90. extern struct SN76477interface sheriff_sn76477_interface;
  91. extern struct Samplesinterface boothill_samples_interface;
  92. extern struct DACinterface schaser_dac_interface;
  93. extern struct CustomSound_interface schaser_custom_interface;
  94. extern struct SN76477interface schaser_sn76477_interface;
  95.  
  96. /* in vidhrdw/8080bw.c */
  97.  
  98. int invaders_vh_start(void);
  99. void invaders_vh_stop(void);
  100.  
  101. void init_8080bw(void);
  102. void init_invaders(void);
  103. void init_invadpt2(void);
  104. void init_invaddlx(void);
  105. void init_invrvnge(void);
  106. void init_invad2ct(void);
  107. void init_schaser(void);
  108. void init_rollingc(void);
  109. void init_polaris(void);
  110. void init_lupin3(void);
  111. void init_seawolf(void);
  112. void init_blueshrk(void);
  113. void init_desertgu(void);
  114. void init_spcenctr(void);
  115. void init_helifire(void);
  116. void init_phantom2(void);
  117.  
  118. WRITE_HANDLER( invaders_videoram_w );
  119. WRITE_HANDLER( schaser_colorram_w );
  120. READ_HANDLER( schaser_colorram_r );
  121. WRITE_HANDLER( helifire_colorram_w );
  122.  
  123. void invaders_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  124.  
  125. void invadpt2_vh_convert_color_prom(unsigned char *pallete, unsigned short *colortable,const unsigned char *color_prom);
  126. void helifire_vh_convert_color_prom(unsigned char *pallete, unsigned short *colortable,const unsigned char *color_prom);
  127.  
  128.  
  129. static unsigned char invaders_palette[] =
  130. {
  131.     0x00,0x00,0x00, /* BLACK */
  132.     0xff,0xff,0xff, /* WHITE */
  133. };
  134.  
  135. static void init_palette(unsigned char *game_palette, unsigned short *game_colortable,const unsigned char *color_prom)
  136. {
  137.     memcpy(game_palette,invaders_palette,sizeof(invaders_palette));
  138. }
  139.  
  140.  
  141. /*******************************************************/
  142. /*                                                     */
  143. /* Midway "Space Invaders"                             */
  144. /*                                                     */
  145. /*******************************************************/
  146.  
  147. static struct MemoryReadAddress invaders_readmem[] =
  148. {
  149.     { 0x0000, 0x1fff, MRA_ROM },
  150.     { 0x2000, 0x3fff, MRA_RAM },
  151.     { 0x4000, 0x5fff, MRA_ROM },
  152.     { -1 }  /* end of table */
  153. };
  154.  
  155. static struct MemoryWriteAddress invaders_writemem[] =
  156. {
  157.     { 0x0000, 0x1fff, MWA_ROM },
  158.     { 0x2000, 0x23ff, MWA_RAM },
  159.     { 0x2400, 0x3fff, invaders_videoram_w, &videoram, &videoram_size },
  160.     { 0x4000, 0x5fff, MWA_ROM },
  161.     { -1 }  /* end of table */
  162. };
  163.  
  164. static struct IOReadPort invaders_readport[] =
  165. {
  166.     { 0x00, 0x00, input_port_0_r },
  167.     { 0x01, 0x01, input_port_1_r },
  168.     { 0x02, 0x02, input_port_2_r },
  169.     { 0x03, 0x03, invaders_shift_data_r },
  170.     { -1 }  /* end of table */
  171. };
  172.  
  173. static struct IOWritePort writeport_0_3[] =
  174. {
  175.     { 0x00, 0x00, invaders_shift_amount_w },
  176.     { 0x03, 0x03, invaders_shift_data_w },
  177.     { -1 }  /* end of table */
  178. };
  179.  
  180. static struct IOWritePort writeport_1_2[] =
  181. {
  182.     { 0x01, 0x01, invaders_shift_amount_w },
  183.     { 0x02, 0x02, invaders_shift_data_w },
  184.     { -1 }  /* end of table */
  185. };
  186.  
  187. static struct IOWritePort writeport_2_3[] =
  188. {
  189.     { 0x02, 0x02, invaders_shift_amount_w },
  190.     { 0x03, 0x03, invaders_shift_data_w },
  191.     { -1 }  /* end of table */
  192. };
  193.  
  194. static struct IOWritePort writeport_2_4[] =
  195. {
  196.     { 0x02, 0x02, invaders_shift_amount_w },
  197.     { 0x04, 0x04, invaders_shift_data_w },
  198.     { -1 }  /* end of table */
  199. };
  200.  
  201. static struct IOWritePort writeport_4_3[] =
  202. {
  203.     { 0x03, 0x03, invaders_shift_data_w },
  204.     { 0x04, 0x04, invaders_shift_amount_w },
  205.     { -1 }  /* end of table */
  206. };
  207.  
  208.  
  209. INPUT_PORTS_START( invaders )
  210.     PORT_START      /* IN0 */
  211.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  212.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  213.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  214.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  215.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  216.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  217.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  218.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  219.  
  220.     PORT_START      /* IN1 */
  221.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  222.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  223.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  224.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  225.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  226.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  227.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  228.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* must be ACTIVE_HIGH Super Invaders */
  229.  
  230.     PORT_START      /* DSW0 */
  231.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  232.     PORT_DIPSETTING(    0x00, "3" )
  233.     PORT_DIPSETTING(    0x01, "4" )
  234.     PORT_DIPSETTING(    0x02, "5" )
  235.     PORT_DIPSETTING(    0x03, "6" )
  236.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  237.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )
  238.     PORT_DIPSETTING(    0x08, "1000" )
  239.     PORT_DIPSETTING(    0x00, "1500" )
  240.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  241.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  242.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  243.     PORT_DIPNAME( 0x80, 0x00, "Coin Info" )
  244.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  245.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  246.  
  247.     PORT_START        /* Dummy port for cocktail mode */
  248.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  249.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  250.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  251. INPUT_PORTS_END
  252.  
  253.  
  254. static struct MachineDriver machine_driver_invaders =
  255. {
  256.     /* basic machine hardware */
  257.     {
  258.         {
  259.             CPU_8080,
  260.             2000000,        /* 2 Mhz? */
  261.             invaders_readmem,invaders_writemem,invaders_readport,writeport_2_4,
  262.             invaders_interrupt,2    /* two interrupts per frame */
  263.         }
  264.     },
  265.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  266.     1,      /* single CPU, no need for interleaving */
  267.     init_machine_invaders,
  268.  
  269.     /* video hardware */
  270.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  271.     0,      /* no gfxdecodeinfo - bitmapped display */
  272.     32768+2, 0,        /* leave extra colors for the overlay */
  273.     init_palette,
  274.  
  275.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  276.     0,
  277.     invaders_vh_start,
  278.     invaders_vh_stop,
  279.     invaders_vh_screenrefresh,
  280.  
  281.     /* sound hardware */
  282.     0, 0, 0, 0,
  283.     {
  284.         {
  285.             SOUND_SAMPLES,
  286.             &invaders_samples_interface
  287.         },
  288.         {
  289.             SOUND_SN76477,
  290.             &invaders_sn76477_interface
  291.         }
  292.     }
  293. };
  294.  
  295.  
  296. /*******************************************************/
  297. /*                                                     */
  298. /* Space Invaders TV Version (Taito)                   */
  299. /*                                                     */
  300. /*LT 24-12-1998                                        */
  301. /*******************************************************/
  302.  
  303. /* same as Invaders with a test mode switch */
  304.  
  305. INPUT_PORTS_START( sitv )
  306.     PORT_START        /* TEST MODE */
  307.     PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
  308.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  309.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  310.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  311.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  312.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  313.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  314.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  315.  
  316.     PORT_START      /* IN1 */
  317.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  318.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  319.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  320.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  321.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  322.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  323.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  324.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  325.  
  326.     PORT_START      /* DSW0 */
  327.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  328.     PORT_DIPSETTING(    0x00, "3" )
  329.     PORT_DIPSETTING(    0x01, "4" )
  330.     PORT_DIPSETTING(    0x02, "5" )
  331.     PORT_DIPSETTING(    0x03, "6" )
  332.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  333.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )
  334.     PORT_DIPSETTING(    0x08, "1000" )
  335.     PORT_DIPSETTING(    0x00, "1500" )
  336.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  337.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  338.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  339.     PORT_DIPNAME( 0x80, 0x00, "Coin Info" )
  340.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  341.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  342.  
  343.     PORT_START        /* Dummy port for cocktail mode */
  344.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  345.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  346.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  347. INPUT_PORTS_END
  348.  
  349.  
  350. /*******************************************************/
  351. /*                                                     */
  352. /* Midway "Space Invaders Part II"                     */
  353. /*                                                     */
  354. /*******************************************************/
  355.  
  356. INPUT_PORTS_START( invadpt2 )
  357.     PORT_START      /* IN0 */
  358.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  359.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  360.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  361.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  362.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  363.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  364.     PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )    /* otherwise high score entry ends right away */
  365.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  366.  
  367.     PORT_START        /* IN1 */
  368.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  369.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  370.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  371.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  372.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  373.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  374.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  375.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  376.  
  377.     PORT_START      /* DSW0 */
  378.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )
  379.     PORT_DIPSETTING(    0x00, "3" )
  380.     PORT_DIPSETTING(    0x01, "4" )
  381.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  382.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  383.     PORT_DIPSETTING(    0x02, DEF_STR( On ) )
  384.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  385.     PORT_DIPNAME( 0x08, 0x00, "High Score Preset Mode" )
  386.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  387.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  388.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  389.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  390.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  391.     PORT_DIPNAME( 0x80, 0x00, "Coin Info" )
  392.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  393.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  394.  
  395.     PORT_START        /* Dummy port for cocktail mode */
  396.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  397.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  398.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  399. INPUT_PORTS_END
  400.  
  401.  
  402. /* same as regular invaders, but with a color board added */
  403.  
  404. static struct MachineDriver machine_driver_invadpt2 =
  405. {
  406.     /* basic machine hardware */
  407.     {
  408.         {
  409.             CPU_8080,
  410.             2000000,        /* 2 Mhz? */
  411.             invaders_readmem,invaders_writemem,invaders_readport,writeport_2_4,
  412.             invaders_interrupt,2    /* two interrupts per frame */
  413.         }
  414.     },
  415.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  416.     1,      /* single CPU, no need for interleaving */
  417.     init_machine_invaders,
  418.  
  419.     /* video hardware */
  420.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  421.     0,      /* no gfxdecodeinfo - bitmapped display */
  422.     8, 0,
  423.     invadpt2_vh_convert_color_prom,
  424.  
  425.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  426.     0,
  427.     invaders_vh_start,
  428.     invaders_vh_stop,
  429.     invaders_vh_screenrefresh,
  430.  
  431.     /* sound hardware */
  432.     0, 0, 0, 0,
  433.     {
  434.         {
  435.             SOUND_SAMPLES,
  436.             &invaders_samples_interface
  437.         },
  438.         {
  439.             SOUND_SN76477,
  440.             &invaders_sn76477_interface
  441.         }
  442.     }
  443. };
  444.  
  445.  
  446. /*******************************************************/
  447. /*                                                     */
  448. /* ?????? "Super Earth Invasion"                       */
  449. /*                                                     */
  450. /*******************************************************/
  451.  
  452. INPUT_PORTS_START( earthinv )
  453.     PORT_START      /* IN0 */
  454.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  455.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  456.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  457.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  458.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  459.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  460.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  461.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  462.  
  463.     PORT_START      /* IN1 */
  464.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  465.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  466.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  467.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  468.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  469.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  470.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  471.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  472.  
  473.     PORT_START      /* DSW0 */
  474.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )
  475.     PORT_DIPSETTING(    0x00, "2" )
  476.     PORT_DIPSETTING(    0x01, "3" )
  477.     PORT_DIPNAME( 0x02, 0x02, "Pence Coinage" )
  478.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  479.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  480.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) /* Pence Coin */
  481.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) /* Not bonus */
  482.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  483.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  484.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  485.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  486.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  487.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coinage ) )
  488.     PORT_DIPSETTING(    0x00, "2C/1C 50p/3C (+ Bonus Life)" )
  489.     PORT_DIPSETTING(    0x80, "1C/1C 50p/5C" )
  490.  
  491.     PORT_START        /* Dummy port for cocktail mode */
  492.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  493.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  494.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  495. INPUT_PORTS_END
  496.  
  497.  
  498. /*******************************************************/
  499. /*                                                     */
  500. /* ?????? "Space Attack II"                            */
  501. /*                                                     */
  502. /*******************************************************/
  503.  
  504. INPUT_PORTS_START( spaceatt )
  505.     PORT_START      /* IN0 */
  506.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  507.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  508.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  509.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  510.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  511.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  512.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  513.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  514.  
  515.     PORT_START      /* IN1 */
  516.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  517.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  518.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  519.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  520.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  521.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  522.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  523.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  524.  
  525.     PORT_START      /* DSW0 */
  526.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  527.     PORT_DIPSETTING(    0x00, "3" )
  528.     PORT_DIPSETTING(    0x01, "4" )
  529.     PORT_DIPSETTING(    0x02, "5" )
  530.     PORT_DIPSETTING(    0x03, "6" )
  531.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  532.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )
  533.     PORT_DIPSETTING(    0x08, "1000" )
  534.     PORT_DIPSETTING(    0x00, "1500" )
  535.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  536.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  537.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  538.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  539.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  540.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  541.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  542.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  543.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  544.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )
  545.     PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
  546.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  547.  
  548.     PORT_START        /* Dummy port for cocktail mode (not used) */
  549.     PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  550. INPUT_PORTS_END
  551.  
  552.  
  553. /*******************************************************/
  554. /*                                                     */
  555. /* Zenitone Microsec "Invaders Revenge"                */
  556. /*                                                     */
  557. /*******************************************************/
  558.  
  559. INPUT_PORTS_START( invrvnge )
  560.     PORT_START      /* IN0 */
  561.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  562.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  563.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  564.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  565.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  566.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  567.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  568.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  569.  
  570.     PORT_START      /* IN1 */
  571.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  572.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  573.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  574.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  575.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  576.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  577.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  578.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  579.  
  580.     PORT_START      /* DSW0 */
  581.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  582.     PORT_DIPSETTING(    0x00, "3" )
  583.     PORT_DIPSETTING(    0x01, "4" )
  584.     PORT_DIPSETTING(    0x02, "5" )
  585.     PORT_DIPSETTING(    0x03, "6" )
  586.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  587.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  588.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  589.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  590.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  591.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  592.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  593.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )
  594.     PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
  595.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  596.  
  597.     PORT_START        /* Dummy port for cocktail mode */
  598.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  599.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  600.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  601. INPUT_PORTS_END
  602.  
  603.  
  604. /*******************************************************/
  605. /*                                                     */
  606. /* Midway "Space Invaders II Cocktail"                 */
  607. /*                                                     */
  608. /*******************************************************/
  609.  
  610. INPUT_PORTS_START( invad2ct )
  611.     PORT_START
  612.     PORT_SERVICE(0x01, IP_ACTIVE_LOW)               /* dip 8 */
  613.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* tied to pull-down */
  614.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* tied to pull-up */
  615.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* tied to pull-down */
  616.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* tied to pull-up */
  617.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* tied to pull-up */
  618.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* labelled reset but tied to pull-up */
  619.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* tied to pull-up */
  620.  
  621.     PORT_START
  622.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  623.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  624.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  625.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* tied to pull-down */
  626.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  627.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT  | IPF_2WAY )
  628.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_2WAY )
  629.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )  /* tied to pull-up */
  630.  
  631.     PORT_START
  632.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) ) /* dips 4 & 3 */
  633.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
  634.     PORT_DIPSETTING(    0x03, DEF_STR( 2C_2C ) )
  635.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  636.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
  637.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )   /* tied to pull-up */
  638.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) /* dip 2 */
  639.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  640.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  641.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  642.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL )
  643.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
  644.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Bonus_Life ) ) /* dip 1 */
  645.     PORT_DIPSETTING(    0x80, "1500" )
  646.     PORT_DIPSETTING(    0x00, "2000" )
  647.  
  648.     PORT_START        /* Dummy port for cocktail mode (not used) */
  649.     PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  650. INPUT_PORTS_END
  651.  
  652.  
  653. static struct MachineDriver machine_driver_invad2ct =
  654. {
  655.     /* basic machine hardware */
  656.     {
  657.         {
  658.             CPU_8080,
  659.             1996800,        /* 19.968Mhz / 10 */
  660.             invaders_readmem,invaders_writemem,invaders_readport,writeport_2_4,
  661.             invaders_interrupt,2    /* two interrupts per frame */
  662.         }
  663.     },
  664.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  665.     1,      /* single CPU, no need for interleaving */
  666.     init_machine_invad2ct,
  667.  
  668.     /* video hardware */
  669.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  670.     0,      /* no gfxdecodeinfo - bitmapped display */
  671.     32768+2, 0,        /* leave extra colors for the overlay */
  672.     init_palette,
  673.  
  674.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  675.     0,
  676.     invaders_vh_start,
  677.     invaders_vh_stop,
  678.     invaders_vh_screenrefresh,
  679.  
  680.     /* sound hardware */
  681.     0, 0, 0, 0,
  682.     {
  683.         {
  684.             SOUND_SAMPLES,
  685.             &invad2ct_samples_interface
  686.         },
  687.         {
  688.             SOUND_SN76477,
  689.             &invad2ct_sn76477_interface
  690.         }
  691.     }
  692. };
  693.  
  694.  
  695. /*******************************************************/
  696. /*                                                     */
  697. /* Taito "Space Laser"                                 */
  698. /*                                                     */
  699. /*******************************************************/
  700.  
  701. INPUT_PORTS_START( spclaser )
  702.     PORT_START      /* IN0 */
  703.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  704.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  705.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  706.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  707.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  708.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  709.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  710.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  711.  
  712.     PORT_START      /* IN1 */
  713.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  714.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  715.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  716.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  717.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  718.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  719.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  720.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  721.  
  722.     PORT_START      /* DSW0 */
  723.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  724.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  725.     PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  726.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  727.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  728.     PORT_DIPSETTING(    0x02, DEF_STR( On ) )
  729.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  730.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  731.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  732.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  733.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  734.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  735.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  736.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  737.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  738.     PORT_DIPNAME( 0x80, 0x00, DEF_STR(Coinage) )
  739.     PORT_DIPSETTING(    0x00, "1 Coin/1 or 2 Players" )
  740.     PORT_DIPSETTING(    0x80, "1 Coin/1 Player  2 Coins/2 Players" )
  741.  
  742.     PORT_START        /* Dummy port for cocktail mode (not used) */
  743.     PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  744. INPUT_PORTS_END
  745.  
  746.  
  747. /*******************************************************/
  748. /*                                                     */
  749. /* Space War Part 3                                    */
  750. /*                                                     */
  751. /* Added 21/11/1999 By LT                              */
  752. /* Thanks to Peter Fyfe for machine info               */
  753. /*******************************************************/
  754.  
  755. INPUT_PORTS_START( spacewr3 )
  756.     PORT_START      /* IN0 */
  757.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  758.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  759.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  760.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  761.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  762.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  763.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  764.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  765.  
  766.     PORT_START      /* IN1 */
  767.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  768.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  769.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  770.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  771.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  772.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  773.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  774.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  775.  
  776.     PORT_START      /* DSW0 */
  777.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )
  778.     PORT_DIPSETTING(    0x00, "3" )
  779.     PORT_DIPSETTING(    0x01, "4" )
  780.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  781.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  782.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  783.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  784.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )
  785.     PORT_DIPSETTING(    0x08, "1000" )
  786.     PORT_DIPSETTING(    0x00, "1500" )
  787.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  788.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  789.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  790.     PORT_DIPNAME( 0x80, 0x00, "Coin Info" )
  791.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  792.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  793.  
  794.     PORT_START        /* Dummy port for cocktail mode */
  795.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  796.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  797.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  798. INPUT_PORTS_END
  799.  
  800.  
  801. /*******************************************************/
  802. /*                                                     */
  803. /* Taito "Galaxy Wars"                                 */
  804. /*                                                     */
  805. /*******************************************************/
  806.  
  807. INPUT_PORTS_START( galxwars )
  808.     PORT_START      /* IN0 */
  809.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  810.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  811.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  812.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  813.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  814.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  815.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  816.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  817.  
  818.     PORT_START      /* IN1 */
  819.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  820.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  821.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  822.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  823.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  824.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  825.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  826.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  827.  
  828.     PORT_START      /* DSW0 */
  829.     PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
  830.     PORT_DIPSETTING(    0x00, "2" )
  831.     PORT_DIPSETTING(    0x01, "3" )
  832.     PORT_DIPSETTING(    0x02, "4" )
  833.     PORT_DIPSETTING(    0x03, "5" )
  834.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  835.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  836.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  837.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )
  838.     PORT_DIPSETTING(    0x00, "3000" )
  839.     PORT_DIPSETTING(    0x08, "5000" )
  840.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  841.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY| IPF_PLAYER2 )
  842.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY| IPF_PLAYER2 )
  843.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )
  844.     PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
  845.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  846.  
  847.     PORT_START        /* Dummy port for cocktail mode */
  848.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  849.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  850.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  851. INPUT_PORTS_END
  852.  
  853.  
  854. /*******************************************************/
  855. /*                                                     */
  856. /* Taito "Lunar Rescue"                                */
  857. /*                                                     */
  858. /*******************************************************/
  859.  
  860. INPUT_PORTS_START( lrescue )
  861.     PORT_START      /* IN0 */
  862.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  863.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  864.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  865.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  866.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  867.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  868.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  869.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  870.  
  871.     PORT_START      /* IN1 */
  872.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  873.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  874.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  875.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  876.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  877.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  878.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  879.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  880.  
  881.     PORT_START      /* DSW0 */
  882.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  883.     PORT_DIPSETTING(    0x00, "3" )
  884.     PORT_DIPSETTING(    0x01, "4" )
  885.     PORT_DIPSETTING(    0x02, "5" )
  886.     PORT_DIPSETTING(    0x03, "6" )
  887.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  888.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  889.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  890.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  891.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  892.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  893.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  894.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  895.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  896.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  897.  
  898.     PORT_START        /* Dummy port for cocktail mode */
  899.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  900.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  901.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  902. INPUT_PORTS_END
  903.  
  904.  
  905. /*******************************************************/
  906. /*                                                     */
  907. /* Universal "Cosmic Monsters"                         */
  908. /*                                                     */
  909. /*******************************************************/
  910.  
  911. INPUT_PORTS_START( cosmicmo )
  912.     PORT_START      /* IN0 */
  913.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  914.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  915.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  916.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  917.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  918.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  919.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  920.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  921.  
  922.     PORT_START      /* IN1 */
  923.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  924.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  925.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  926.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  927.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  928.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  929.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  930.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  931.  
  932.     PORT_START      /* DSW0 */
  933.     PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
  934.     PORT_DIPSETTING(    0x00, "2" )
  935.     PORT_DIPSETTING(    0x01, "3" )
  936.     PORT_DIPSETTING(    0x02, "4" )
  937.     PORT_DIPSETTING(    0x03, "5" )
  938.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  939.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  940.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  941.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  942.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  943.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  944.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  945.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  946.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  947.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )
  948.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  949.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  950.  
  951.     PORT_START        /* Dummy port for cocktail mode */
  952.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  953.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  954.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  955. INPUT_PORTS_END
  956.  
  957.  
  958.  
  959. /*******************************************************/
  960. /*                                                     */
  961. /* Nichibutsu "Rolling Crash"                          */
  962. /*                                                     */
  963. /*******************************************************/
  964.  
  965. static struct MemoryReadAddress rollingc_readmem[] =
  966. {
  967.     { 0x0000, 0x1fff, MRA_ROM },
  968.     { 0x2000, 0x3fff, MRA_RAM },
  969. //  { 0x2000, 0x2002, MRA_RAM },
  970. //  { 0x2003, 0x2003, hack },
  971.     { 0x4000, 0x5fff, MRA_ROM },
  972.     { 0xa400, 0xbfff, schaser_colorram_r },
  973.     { 0xe400, 0xffff, MRA_RAM },
  974.     { -1 }  /* end of table */
  975. };
  976.  
  977. static struct MemoryWriteAddress rollingc_writemem[] =
  978. {
  979.     { 0x0000, 0x1fff, MWA_ROM },
  980.     { 0x2000, 0x23ff, MWA_RAM },
  981.     { 0x2400, 0x3fff, invaders_videoram_w, &videoram, &videoram_size },
  982.     { 0x4000, 0x5fff, MWA_ROM },
  983.     { 0xa400, 0xbfff, schaser_colorram_w, &colorram },
  984.     { 0xe400, 0xffff, MWA_RAM },
  985.     { -1 }  /* end of table */
  986. };
  987.  
  988. INPUT_PORTS_START( rollingc )
  989.     PORT_START      /* IN0 */
  990.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  991.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) /* Game Select */
  992.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) /* Game Select */
  993.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  994.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  995.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  996.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  997.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  998.  
  999.     PORT_START      /* IN1 */
  1000.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  1001.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  1002.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  1003.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1004.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  1005.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  1006.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  1007.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1008.  
  1009.     PORT_START      /* DSW0 */
  1010.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  1011.     PORT_DIPSETTING(    0x00, "3" )
  1012.     PORT_DIPSETTING(    0x01, "4" )
  1013.     PORT_DIPSETTING(    0x02, "5" )
  1014.     PORT_DIPSETTING(    0x03, "6" )
  1015.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  1016.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  1017.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  1018.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1019.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  1020.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  1021.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  1022.     PORT_DIPNAME( 0x80, 0x00, "Coin Info" )
  1023.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  1024.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1025.  
  1026.     PORT_START        /* Dummy port for cocktail mode */
  1027.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  1028.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  1029.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  1030. INPUT_PORTS_END
  1031.  
  1032.  
  1033. static struct MachineDriver machine_driver_rollingc =
  1034. {
  1035.     /* basic machine hardware */
  1036.     {
  1037.         {
  1038.             CPU_8080,
  1039.             2000000,        /* 2 Mhz? */
  1040.             rollingc_readmem,rollingc_writemem,invaders_readport,writeport_2_4,
  1041.             invaders_interrupt,2    /* two interrupts per frame */
  1042.         }
  1043.     },
  1044.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  1045.     1,      /* single CPU, no need for interleaving */
  1046.     0,
  1047.  
  1048.     /* video hardware */
  1049.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1050.     0,      /* no gfxdecodeinfo - bitmapped display */
  1051.     8, 0,
  1052.     invadpt2_vh_convert_color_prom,
  1053.  
  1054.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  1055.     0,
  1056.     invaders_vh_start,
  1057.     invaders_vh_stop,
  1058.     invaders_vh_screenrefresh,
  1059.  
  1060.     /* sound hardware */
  1061.     0, 0, 0, 0
  1062. };
  1063.  
  1064.  
  1065.  
  1066. /*********************************************************/
  1067. /*                                                       */
  1068. /* Nintendo "Sheriff"                                    */
  1069. /*                                                       */
  1070. /* The only difference between Sheriff and Bandido,      */
  1071. /* beside the copyright notice is the adjustable coinage */
  1072. /* in Bandido.                                             */
  1073. /*                                                       */
  1074. /*********************************************************/
  1075.  
  1076. static struct MemoryReadAddress sheriff_readmem[] =
  1077. {
  1078.     { 0x0000, 0x27ff, MRA_ROM },
  1079.     { 0x4200, 0x7fff, MRA_RAM },
  1080.     { -1 }  /* end of table */
  1081. };
  1082.  
  1083. static struct MemoryWriteAddress sheriff_writemem[] =
  1084. {
  1085.     { 0x0000, 0x27ff, MWA_ROM },
  1086.     { 0x4200, 0x5dff, invaders_videoram_w, &videoram, &videoram_size },
  1087.     { 0x5e00, 0x7fff, MWA_RAM },
  1088.     { -1 }  /* end of table */
  1089. };
  1090.  
  1091. static struct IOReadPort sheriff_readport[] =
  1092. {
  1093.     { 0x00, 0x00, input_port_0_r },
  1094.     { 0x01, 0x01, input_port_1_r },
  1095.     { 0x02, 0x02, input_port_2_r },
  1096.     { 0x03, 0x03, invaders_shift_data_r },
  1097.     { 0x04, 0x04, input_port_3_r },
  1098.     { -1 }  /* end of table */
  1099. };
  1100.  
  1101. static struct MemoryReadAddress sheriff_sound_readmem[] =
  1102. {
  1103.     { 0x0000, 0x03ff, MRA_ROM },
  1104.     { -1 }    /* end of table */
  1105. };
  1106. static struct MemoryWriteAddress sheriff_sound_writemem[] =
  1107. {
  1108.     { 0x0000, 0x03ff, MWA_ROM },
  1109.     { -1 }    /* end of table */
  1110. };
  1111.  
  1112. static struct IOReadPort sheriff_sound_readport[] =
  1113. {
  1114.     { I8039_p1, I8039_p1, sheriff_sh_p1_r },
  1115.     { I8039_p2, I8039_p2, sheriff_sh_p2_r },
  1116.     { I8039_t0, I8039_t0, sheriff_sh_t0_r },
  1117.     { I8039_t1, I8039_t1, sheriff_sh_t1_r },
  1118.     { -1 }    /* end of table */
  1119. };
  1120.  
  1121. static struct IOWritePort sheriff_sound_writeport[] =
  1122. {
  1123.     { I8039_p2, I8039_p2, sheriff_sh_p2_w },
  1124.     { -1 }    /* end of table */
  1125. };
  1126.  
  1127. /* All of the controls/dips for cocktail mode are as per the schematic */
  1128. /* BUT a coffee table version was never manufactured and support was   */
  1129. /* probably never completed.                                           */
  1130. /* e.g. cocktail players button will give 6 credits!                   */
  1131.  
  1132. INPUT_PORTS_START( sheriff )
  1133.     PORT_START      /* 00 Main Controls */
  1134.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT  | IPF_8WAY )
  1135.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT   | IPF_8WAY )
  1136.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP     | IPF_8WAY )
  1137.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN   | IPF_8WAY )
  1138.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY )
  1139.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT  | IPF_8WAY )
  1140.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP    | IPF_8WAY )
  1141.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN  | IPF_8WAY )
  1142.  
  1143.     PORT_START      /* 01 Player 2 Controls */
  1144.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT  | IPF_8WAY | IPF_COCKTAIL )
  1145.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT   | IPF_8WAY | IPF_COCKTAIL )
  1146.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP     | IPF_8WAY | IPF_COCKTAIL )
  1147.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN   | IPF_8WAY | IPF_COCKTAIL )
  1148.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  1149.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  1150.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP    | IPF_8WAY | IPF_COCKTAIL )
  1151.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  1152.  
  1153.     PORT_START      /* 02 */
  1154.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  1155.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  1156.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  1157.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
  1158.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )           /* Marked for   */
  1159.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )           /* Expansion    */
  1160.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )           /* on Schematic */
  1161.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  1162.  
  1163.     PORT_START      /* 04 */
  1164.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  1165.     PORT_DIPSETTING(    0x00, "3" )
  1166.     PORT_DIPSETTING(    0x01, "4" )
  1167.     PORT_DIPSETTING(    0x02, "5" )
  1168.     PORT_DIPSETTING(    0x03, "6" )
  1169.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  1170.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  1171.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1172.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  1173.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  1174.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1175.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  1176.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  1177.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1178.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  1179.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  1180.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1181.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  1182.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  1183.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1184.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
  1185.     PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
  1186.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  1187. INPUT_PORTS_END
  1188.  
  1189. INPUT_PORTS_START( bandido )
  1190.     PORT_START      /* 00 Main Controls */
  1191.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT  | IPF_8WAY )
  1192.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT   | IPF_8WAY )
  1193.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP     | IPF_8WAY )
  1194.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN   | IPF_8WAY )
  1195.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY )
  1196.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT  | IPF_8WAY )
  1197.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP    | IPF_8WAY )
  1198.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN  | IPF_8WAY )
  1199.  
  1200.     PORT_START      /* 01 Player 2 Controls */
  1201.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT  | IPF_8WAY | IPF_COCKTAIL )
  1202.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_LEFT   | IPF_8WAY | IPF_COCKTAIL )
  1203.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP     | IPF_8WAY | IPF_COCKTAIL )
  1204.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN   | IPF_8WAY | IPF_COCKTAIL )
  1205.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  1206.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  1207.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP    | IPF_8WAY | IPF_COCKTAIL )
  1208.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  1209.  
  1210.     PORT_START      /* 02 */
  1211.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  1212.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  1213.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  1214.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
  1215.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )           /* Marked for   */
  1216.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )           /* Expansion    */
  1217.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )           /* on Schematic */
  1218.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  1219.  
  1220.     PORT_START      /* 04 */
  1221.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  1222.     PORT_DIPSETTING(    0x00, "3" )
  1223.     PORT_DIPSETTING(    0x01, "4" )
  1224.     PORT_DIPSETTING(    0x02, "5" )
  1225.     PORT_DIPSETTING(    0x03, "6" )
  1226.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coinage ) )
  1227.     PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
  1228.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  1229.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  1230.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  1231.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1232.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  1233.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  1234.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1235.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  1236.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  1237.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1238.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  1239.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  1240.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1241.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
  1242.     PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
  1243.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  1244. INPUT_PORTS_END
  1245.  
  1246.  
  1247. static struct MachineDriver machine_driver_sheriff =
  1248. {
  1249.     /* basic machine hardware */
  1250.     {
  1251.         {
  1252.             CPU_8080,
  1253.             20160000/8,        /* 2.52 MHz */
  1254.             sheriff_readmem,sheriff_writemem,sheriff_readport,writeport_2_3,
  1255.             invaders_interrupt,2    /* two interrupts per frame */
  1256.         },
  1257.         {
  1258.             CPU_I8035 | CPU_AUDIO_CPU,
  1259.             6000000/15,    /* ??? */
  1260.             sheriff_sound_readmem,sheriff_sound_writemem,
  1261.             sheriff_sound_readport,sheriff_sound_writeport,
  1262.             ignore_interrupt,1
  1263.         }
  1264.     },
  1265.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  1266.     1,      /* single CPU, no need for interleaving */
  1267.     init_machine_sheriff,
  1268.  
  1269.     /* video hardware */
  1270.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1271.     0,      /* no gfxdecodeinfo - bitmapped display */
  1272.     32768+2, 0,        /* leave extra colors for the overlay */
  1273.     init_palette,
  1274.  
  1275.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  1276.     0,
  1277.     invaders_vh_start,
  1278.     invaders_vh_stop,
  1279.     invaders_vh_screenrefresh,
  1280.  
  1281.     /* sound hardware */
  1282.     0, 0, 0, 0,
  1283.     {
  1284.         {
  1285.             SOUND_DAC,
  1286.             &sheriff_dac_interface
  1287.         },
  1288.         {
  1289.             SOUND_SN76477,
  1290.             &sheriff_sn76477_interface
  1291.         }
  1292.     }
  1293. };
  1294.  
  1295.  
  1296. /*******************************************************/
  1297. /*                                                     */
  1298. /* Midway "Space Encounters"                           */
  1299. /*                                                     */
  1300. /*                                                     */
  1301. /*******************************************************/
  1302.  
  1303. static struct IOReadPort spcenctr_readport[] =
  1304. {
  1305.     { 0x00, 0x00, spcenctr_port_0_r }, /* These 2 ports use Gray's binary encoding */
  1306.     { 0x01, 0x01, spcenctr_port_1_r },
  1307.     { 0x02, 0x02, input_port_2_r },
  1308.     { -1 }  /* end of table */
  1309. };
  1310.  
  1311. static struct IOWritePort spcenctr_writeport[] =
  1312. {
  1313.     { -1 }  /* end of table */
  1314. };
  1315.  
  1316. INPUT_PORTS_START( spcenctr )
  1317.     PORT_START      /* IN0 */
  1318.     PORT_ANALOG( 0x3f, 0x1f, IPT_AD_STICK_X | IPF_REVERSE, 10, 10, 0, 0x3f) /* 6 bit horiz encoder - Gray's binary */
  1319.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )    /* fire */
  1320.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  1321.  
  1322.     PORT_START      /* IN1 */
  1323.     PORT_ANALOG( 0x3f, 0x1f, IPT_AD_STICK_Y, 10, 10, 0, 0x3f) /* 6 bit vert encoder - Gray's binary */
  1324.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
  1325.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
  1326.  
  1327.     PORT_START      /* IN2 Dips & Coins */
  1328.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Bonus_Life ) )
  1329.     PORT_DIPSETTING(    0x00, "2000 4000 8000" )
  1330.     PORT_DIPSETTING(    0x01, "3000 6000 12000" )
  1331.     PORT_DIPSETTING(    0x02, "4000 8000 16000" )
  1332.     PORT_DIPSETTING(    0x03, "5000 10000 20000" )
  1333.     PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coinage ) )
  1334.     PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
  1335.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  1336.     PORT_DIPSETTING(    0x0c, DEF_STR( 2C_3C ) )
  1337.     PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
  1338.     PORT_DIPNAME( 0x30, 0x00, "Bonus/Test Mode" )
  1339.     PORT_DIPSETTING(    0x00, "Bonus On" )
  1340.     PORT_DIPSETTING(    0x30, "Bonus Off" )
  1341.     PORT_DIPSETTING(    0x20, "Cross Hatch" )
  1342.     PORT_DIPSETTING(    0x10, "Test Mode" )
  1343.     PORT_DIPNAME( 0xc0, 0x00, "Time" )
  1344.     PORT_DIPSETTING(    0x00, "45" )
  1345.     PORT_DIPSETTING(    0x40, "60" )
  1346.     PORT_DIPSETTING(    0x80, "75" )
  1347.     PORT_DIPSETTING(    0xc0, "90" )
  1348. INPUT_PORTS_END
  1349.  
  1350. static struct MachineDriver machine_driver_spcenctr =
  1351. {
  1352.     /* basic machine hardware */
  1353.     {
  1354.         {
  1355.             CPU_8080,
  1356.             2000000,        /* 2 Mhz? */
  1357.             invaders_readmem,invaders_writemem,spcenctr_readport,spcenctr_writeport,
  1358.             invaders_interrupt,2    /* two interrupts per frame */
  1359.         }
  1360.     },
  1361.     60, DEFAULT_60HZ_VBLANK_DURATION,
  1362.     1,      /* single CPU, no need for interleaving */
  1363.     0,
  1364.  
  1365.     /* video hardware */
  1366.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1367.     0,      /* no gfxdecodeinfo - bitmapped display */
  1368.     32768+2, 0,        /* leave extra colors for the overlay */
  1369.     init_palette,
  1370.  
  1371.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  1372.     0,
  1373.     invaders_vh_start,
  1374.     invaders_vh_stop,
  1375.     invaders_vh_screenrefresh,
  1376.  
  1377.     /* sound hardware */
  1378.     0, 0, 0, 0
  1379. };
  1380.  
  1381.  
  1382. /*******************************************************/
  1383. /*                                                     */
  1384. /* Midway "Gun Fight"                                  */
  1385. /*                                                     */
  1386. /*******************************************************/
  1387.  
  1388. static struct IOReadPort gunfight_readport[] =
  1389. {
  1390.     { 0x00, 0x00, input_port_0_r },
  1391.     { 0x01, 0x01, input_port_1_r },
  1392.     { 0x02, 0x02, input_port_2_r },
  1393.     { 0x03, 0x03, boothill_shift_data_r },
  1394.     { -1 }  /* end of table */
  1395. };
  1396.  
  1397. INPUT_PORTS_START( gunfight )
  1398.     /* Gun position uses bits 4-6, handled using fake paddles */
  1399.     PORT_START      /* IN0 - Player 2 */
  1400.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
  1401.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )        /* Move Man */
  1402.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
  1403.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
  1404.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )              /* Fire */
  1405.  
  1406.     PORT_START      /* IN1 - Player 1 */
  1407.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
  1408.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )              /* Move Man */
  1409.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  1410.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  1411.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 )                    /* Fire */
  1412.  
  1413. #ifdef NOTDEF
  1414.     PORT_START      /* IN2 Dips & Coins */
  1415.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  1416.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
  1417.     PORT_DIPNAME( 0x0C, 0x00, "Plays" )
  1418.     PORT_DIPSETTING(    0x00, "1" )
  1419.     PORT_DIPSETTING(    0x04, "2" )
  1420.     PORT_DIPSETTING(    0x08, "3" )
  1421.     PORT_DIPSETTING(    0x0C, "4" )
  1422.     PORT_DIPNAME( 0x30, 0x00, "Time" ) /* These are correct */
  1423.     PORT_DIPSETTING(    0x00, "60" )
  1424.     PORT_DIPSETTING(    0x10, "70" )
  1425.     PORT_DIPSETTING(    0x20, "80" )
  1426.     PORT_DIPSETTING(    0x30, "90" )
  1427.     PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) )
  1428.     PORT_DIPSETTING(    0x00, "1 Coin/1 Player" )
  1429.     PORT_DIPSETTING(    0x40, "1 Coin/2 Players" )
  1430.     PORT_DIPSETTING(    0x80, "1 Coin/3 Players" )
  1431.     PORT_DIPSETTING(    0xc0, "1 Coin/4 Players" )
  1432. #endif
  1433.  
  1434.     PORT_START      /* IN2 Dips & Coins */
  1435.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  1436.     PORT_DIPSETTING(    0x00, "1 Coin" )
  1437.     PORT_DIPSETTING(    0x01, "2 Coins" )
  1438.     PORT_DIPSETTING(    0x02, "3 Coins" )
  1439.     PORT_DIPSETTING(    0x03, "4 Coins" )
  1440.     PORT_DIPNAME( 0x0C, 0x00, "Plays" )
  1441.     PORT_DIPSETTING(    0x00, "1" )
  1442.     PORT_DIPSETTING(    0x04, "2" )
  1443.     PORT_DIPSETTING(    0x08, "3" )
  1444.     PORT_DIPSETTING(    0x0C, "4" )
  1445.     PORT_DIPNAME( 0x30, 0x00, "Time" ) /* These are correct */
  1446.     PORT_DIPSETTING(    0x00, "60" )
  1447.     PORT_DIPSETTING(    0x10, "70" )
  1448.     PORT_DIPSETTING(    0x20, "80" )
  1449.     PORT_DIPSETTING(    0x30, "90" )
  1450.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
  1451.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
  1452.  
  1453.     PORT_START                                                                                          /* Player 2 Gun */
  1454.     PORT_ANALOGX( 0xff, 0x00, IPT_PADDLE | IPF_PLAYER2, 50, 10, 1, 255, KEYCODE_H, KEYCODE_Y, IP_JOY_NONE, IP_JOY_NONE )
  1455.  
  1456.     PORT_START                                                                                          /* Player 1 Gun */
  1457.     PORT_ANALOGX( 0xff, 0x00, IPT_PADDLE, 50, 10, 1, 255, KEYCODE_Z, KEYCODE_A, IP_JOY_NONE, IP_JOY_NONE )
  1458. INPUT_PORTS_END
  1459.  
  1460. static struct MachineDriver machine_driver_gunfight =
  1461. {
  1462.     /* basic machine hardware */
  1463.     {
  1464.         {
  1465.             CPU_8080,
  1466.             2000000,        /* 2 Mhz? */
  1467.             invaders_readmem,invaders_writemem,gunfight_readport,writeport_2_4,
  1468.             invaders_interrupt,2    /* two interrupts per frame */
  1469.         }
  1470.     },
  1471.     60, DEFAULT_60HZ_VBLANK_DURATION,
  1472.     1,      /* single CPU, no need for interleaving */
  1473.     init_machine_gunfight,
  1474.  
  1475.     /* video hardware */
  1476.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1477.     0,      /* no gfxdecodeinfo - bitmapped display */
  1478.     32768+2, 0,        /* leave extra colors for the overlay */
  1479.     init_palette,
  1480.  
  1481.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  1482.     0,
  1483.     invaders_vh_start,
  1484.     invaders_vh_stop,
  1485.     invaders_vh_screenrefresh,
  1486.  
  1487.     /* sound hardware */
  1488.     0, 0, 0, 0
  1489. };
  1490.  
  1491.  
  1492. /*******************************************************/
  1493. /*                                                     */
  1494. /* Midway "M-4"                                        */
  1495. /*                                                     */
  1496. /*******************************************************/
  1497.  
  1498. INPUT_PORTS_START( m4 )
  1499.     PORT_START      /* IN0 */
  1500.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_UNUSED )
  1501.     PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_JOYSTICK_UP   | IPF_2WAY | IPF_PLAYER2 )
  1502.     PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_UNUSED )
  1503.     PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_JOYSTICK_DOWN | IPF_2WAY | IPF_PLAYER2 )
  1504.     PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_BUTTON1 | IPF_PLAYER2 ) /* left trigger */
  1505.     PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_BUTTON2 | IPF_PLAYER2 ) /* left reload */
  1506.     PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNUSED )
  1507.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNUSED )
  1508.  
  1509.     PORT_START      /* IN1 */
  1510.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  1511.     PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_JOYSTICK_UP   | IPF_2WAY )
  1512.     PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_START1 )
  1513.     PORT_BIT( 0x08, IP_ACTIVE_LOW,  IPT_JOYSTICK_DOWN | IPF_2WAY )
  1514.     PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_BUTTON1 ) /* right trigger */
  1515.     PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_BUTTON2 ) /* right reload */
  1516.     PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_START2 )
  1517.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNUSED )
  1518.  
  1519.     PORT_START      /* IN2 Dips & Coins */
  1520.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  1521.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
  1522.     PORT_DIPSETTING(    0x03, DEF_STR( 2C_2C ) )
  1523.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  1524.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
  1525.     PORT_DIPNAME( 0x0c, 0x0c, "Time" )
  1526.     PORT_DIPSETTING(    0x00, "60" )
  1527.     PORT_DIPSETTING(    0x04, "70" )
  1528.     PORT_DIPSETTING(    0x08, "80" )
  1529.     PORT_DIPSETTING(    0x0C, "90" )
  1530.     PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
  1531.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1532.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1533.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1534. INPUT_PORTS_END
  1535.  
  1536. static struct MachineDriver machine_driver_m4 =
  1537. {
  1538.     /* basic machine hardware */
  1539.     {
  1540.         {
  1541.             CPU_8080,
  1542.             2000000,        /* 2 Mhz? */
  1543.             invaders_readmem,invaders_writemem,gunfight_readport,writeport_1_2,
  1544.             invaders_interrupt,2    /* two interrupts per frame */
  1545.         }
  1546.     },
  1547.     60, DEFAULT_60HZ_VBLANK_DURATION,
  1548.     1,      /* single CPU, no need for interleaving */
  1549.     0,
  1550.  
  1551.     /* video hardware */
  1552.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1553.     0,      /* no gfxdecodeinfo - bitmapped display */
  1554.     32768+2, 0,        /* leave extra colors for the overlay */
  1555.     init_palette,
  1556.  
  1557.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  1558.     0,
  1559.     invaders_vh_start,
  1560.     invaders_vh_stop,
  1561.     invaders_vh_screenrefresh,
  1562.  
  1563.     /* sound hardware */
  1564.     0, 0, 0, 0
  1565. };
  1566.  
  1567.  
  1568. /*******************************************************/
  1569. /*                                                     */
  1570. /* Midway "Boot Hill"                                  */
  1571. /*                                                     */
  1572. /*******************************************************/
  1573.  
  1574. INPUT_PORTS_START( boothill )
  1575.     /* Gun position uses bits 4-6, handled using fake paddles */
  1576.     PORT_START      /* IN0 - Player 2 */
  1577.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
  1578.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )        /* Move Man */
  1579.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
  1580.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
  1581.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) /* Fire */
  1582.  
  1583.     PORT_START      /* IN1 - Player 1 */
  1584.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
  1585.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY ) /* Move Man */
  1586.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  1587.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  1588.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* Fire */
  1589.  
  1590.     PORT_START      /* IN2 Dips & Coins */
  1591.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  1592.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
  1593.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  1594.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
  1595. //    PORT_DIPSETTING(    0x03, DEF_STR( 1C_2C ) )
  1596.     PORT_DIPNAME( 0x0c, 0x00, "Time" )
  1597.     PORT_DIPSETTING(    0x00, "64" )
  1598.     PORT_DIPSETTING(    0x04, "74" )
  1599.     PORT_DIPSETTING(    0x08, "84" )
  1600.     PORT_DIPSETTING(    0x0C, "94" )
  1601.     PORT_SERVICE( 0x10, IP_ACTIVE_HIGH )
  1602.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  1603.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
  1604.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  1605.  
  1606.     PORT_START                                                                                          /* Player 2 Gun */
  1607.     PORT_ANALOGX( 0xff, 0x00, IPT_PADDLE | IPF_PLAYER2, 50, 10, 1, 255, IP_KEY_NONE, IP_KEY_NONE, IP_JOY_NONE, IP_JOY_NONE )
  1608.  
  1609.     PORT_START                                                                                          /* Player 1 Gun */
  1610.     PORT_ANALOGX( 0xff, 0x00, IPT_PADDLE, 50, 10, 1, 255, KEYCODE_Z, KEYCODE_A, IP_JOY_NONE, IP_JOY_NONE )
  1611. INPUT_PORTS_END
  1612.  
  1613.  
  1614. static struct MachineDriver machine_driver_boothill =
  1615. {
  1616.     /* basic machine hardware */
  1617.     {
  1618.         {
  1619.             CPU_8080,
  1620.             2000000,        /* 2 Mhz? */
  1621.             invaders_readmem,invaders_writemem,gunfight_readport,writeport_1_2,
  1622.             invaders_interrupt,2    /* two interrupts per frame */
  1623.         }
  1624.     },
  1625.     60, DEFAULT_60HZ_VBLANK_DURATION,
  1626.     1,      /* single CPU, no need for interleaving */
  1627.     init_machine_boothill,
  1628.  
  1629.     /* video hardware */
  1630.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1631.     0,      /* no gfxdecodeinfo - bitmapped display */
  1632.     32768+2, 0,        /* leave extra colors for the overlay */
  1633.     init_palette,
  1634.  
  1635.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  1636.     0,
  1637.     invaders_vh_start,
  1638.     invaders_vh_stop,
  1639.     invaders_vh_screenrefresh,
  1640.  
  1641.     /* sound hardware */
  1642.     0, 0, 0, 0,
  1643.     {
  1644.         {
  1645.             SOUND_SAMPLES,
  1646.             &boothill_samples_interface
  1647.         }
  1648.     }
  1649. };
  1650.  
  1651.  
  1652. /*******************************************************/
  1653. /*                                                     */
  1654. /* Taito "Space Chaser"                                */
  1655. /*                                                     */
  1656. /*******************************************************/
  1657.  
  1658. static struct MemoryReadAddress schaser_readmem[] =
  1659. {
  1660.     { 0x0000, 0x1fff, MRA_ROM },
  1661.     { 0x2000, 0x3fff, MRA_RAM },
  1662.     { 0x4000, 0x5fff, MRA_ROM },
  1663.     { 0xc400, 0xdfff, schaser_colorram_r },
  1664.     { -1 }  /* end of table */
  1665. };
  1666.  
  1667. static struct MemoryWriteAddress schaser_writemem[] =
  1668. {
  1669.     { 0x0000, 0x1fff, MWA_ROM },
  1670.     { 0x2000, 0x23ff, MWA_RAM },
  1671.     { 0x2400, 0x3fff, invaders_videoram_w, &videoram, &videoram_size },
  1672.     { 0x4000, 0x5fff, MWA_ROM },
  1673.     { 0xc400, 0xdfff, schaser_colorram_w, &colorram },
  1674.     { -1 }  /* end of table */
  1675. };
  1676.  
  1677. INPUT_PORTS_START( schaser )
  1678.     PORT_START      /* IN0 */
  1679.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER2 )
  1680.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER2 )
  1681.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER2 )
  1682.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
  1683.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  1684.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1685.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1686.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1687.  
  1688.     PORT_START      /* IN1 */
  1689.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY )
  1690.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY )
  1691.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY )
  1692.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  1693.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  1694.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
  1695.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
  1696.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  1697.  
  1698.     PORT_START      /* DSW0 */
  1699.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  1700.     PORT_DIPSETTING(    0x00, "3" )
  1701.     PORT_DIPSETTING(    0x01, "4" )
  1702.     PORT_DIPSETTING(    0x02, "5" )
  1703.     PORT_DIPSETTING(    0x03, "6" )
  1704.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  1705.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  1706.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  1707.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Difficulty ) )
  1708.     PORT_DIPSETTING(    0x00, "Easy" )
  1709.     PORT_DIPSETTING(    0x08, "Hard" )
  1710.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  1711.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  1712.     PORT_DIPSETTING(    0x10, DEF_STR( On ) )
  1713.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_TILT )
  1714.     PORT_DIPNAME( 0x40, 0x00, "Number of Controllers" )
  1715.     PORT_DIPSETTING(    0x00, "1" )
  1716.     PORT_DIPSETTING(    0x40, "2" )
  1717.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  1718.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  1719.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  1720.  
  1721.     PORT_START        /* Dummy port for cocktail mode */
  1722.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  1723.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  1724.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  1725. INPUT_PORTS_END
  1726.  
  1727.  
  1728. static struct MachineDriver machine_driver_schaser =
  1729. {
  1730.     /* basic machine hardware */
  1731.     {
  1732.         {
  1733.             CPU_8080,
  1734.             1996800,        /* 19.968Mhz / 10 */
  1735.             schaser_readmem,schaser_writemem,invaders_readport,writeport_2_4,
  1736.             invaders_interrupt,2    /* two interrupts per frame */
  1737.         }
  1738.     },
  1739.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  1740.     1,      /* single CPU, no need for interleaving */
  1741.     init_machine_schaser,
  1742.  
  1743.     /* video hardware */
  1744.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1745.     0,      /* no gfxdecodeinfo - bitmapped display */
  1746.     8, 0,
  1747.     invadpt2_vh_convert_color_prom,
  1748.  
  1749.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  1750.     0,
  1751.     invaders_vh_start,
  1752.     invaders_vh_stop,
  1753.     invaders_vh_screenrefresh,
  1754.  
  1755.     /* sound hardware */
  1756.     0, 0, 0, 0,
  1757.     {
  1758.         {
  1759.             SOUND_SN76477,
  1760.             &schaser_sn76477_interface
  1761.         },
  1762.         {
  1763.             SOUND_DAC,
  1764.             &schaser_dac_interface
  1765.         },
  1766.         {
  1767.             SOUND_CUSTOM,
  1768.             &schaser_custom_interface
  1769.         }
  1770.     }
  1771. };
  1772.  
  1773.  
  1774. /*******************************************************/
  1775. /*                                                     */
  1776. /* Taito "Space Chaser" (CV version)                   */
  1777. /*                                                     */
  1778. /*******************************************************/
  1779.  
  1780. INPUT_PORTS_START( schasrcv )
  1781.     PORT_START      /* IN0 */
  1782.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1783.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1784.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1785.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1786.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1787.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1788.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1789.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1790.  
  1791.     PORT_START        /* IN1 */
  1792.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  1793.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  1794.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  1795.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY )
  1796.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  1797.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY )
  1798.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  1799.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY )
  1800.  
  1801.     PORT_START      /* DSW0 */
  1802.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )
  1803.     PORT_DIPSETTING(    0x00, "3" )
  1804.     PORT_DIPSETTING(    0x01, "4" )
  1805.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_PLAYER2 )
  1806.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_PLAYER2 )
  1807.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Difficulty ) )
  1808.     PORT_DIPSETTING(    0x00, "Easy" )
  1809.     PORT_DIPSETTING(    0x08, "Hard" )
  1810.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  1811.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_PLAYER2 )
  1812.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
  1813.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  1814.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  1815.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  1816.  
  1817.     PORT_START        /* Dummy port for cocktail mode */
  1818.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  1819.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  1820.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  1821. INPUT_PORTS_END
  1822.  
  1823.  
  1824. /*******************************************************/
  1825. /*                                                     */
  1826. /* Midway "Clowns"                                     */
  1827. /*                                                     */
  1828. /*******************************************************/
  1829.  
  1830. /*
  1831.  * Clowns (EPROM version)
  1832.  */
  1833. INPUT_PORTS_START( clowns )
  1834.     PORT_START      /* IN0 */
  1835.     PORT_ANALOG( 0xff, 0x7f, IPT_PADDLE, 100, 10, 0x01, 0xfe)
  1836.  
  1837.     PORT_START      /* IN1 */
  1838.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1839.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1840.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1841.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1842.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
  1843.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  1844.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
  1845.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1846.  
  1847.     PORT_START      /* IN2 Dips & Coins */
  1848.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  1849.     PORT_DIPSETTING(    0x03, DEF_STR( 2C_1C ) )
  1850.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_2C ) )
  1851.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  1852.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
  1853.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  1854.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  1855.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  1856.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  1857.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  1858.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  1859.     PORT_DIPNAME( 0x10, 0x00, "Balloon Resets" )
  1860.     PORT_DIPSETTING(    0x00, "Each row" )
  1861.     PORT_DIPSETTING(    0x10, "All rows" )
  1862.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
  1863.     PORT_DIPSETTING(    0x00, "3000" )
  1864.     PORT_DIPSETTING(    0x20, "4000" )
  1865.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Lives ) )
  1866.     PORT_DIPSETTING(    0x00, "3" )
  1867.     PORT_DIPSETTING(    0x40, "4" )
  1868.     PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
  1869. INPUT_PORTS_END
  1870.  
  1871. static struct MachineDriver machine_driver_clowns =
  1872. {
  1873.     /* basic machine hardware */
  1874.     {
  1875.         {
  1876.             CPU_8080,
  1877.             2000000,        /* 2 Mhz? */
  1878.             invaders_readmem,invaders_writemem,invaders_readport,writeport_1_2,
  1879.             invaders_interrupt,2    /* two interrupts per frame */
  1880.         }
  1881.     },
  1882.     60, DEFAULT_60HZ_VBLANK_DURATION,
  1883.     1,      /* single CPU, no need for interleaving */
  1884.     0,
  1885.  
  1886.     /* video hardware */
  1887.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1888.     0,      /* no gfxdecodeinfo - bitmapped display */
  1889.     32768+2, 0,        /* leave extra colors for the overlay */
  1890.     init_palette,
  1891.  
  1892.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  1893.     0,
  1894.     invaders_vh_start,
  1895.     invaders_vh_stop,
  1896.     invaders_vh_screenrefresh,
  1897.  
  1898.     /* sound hardware */
  1899.     0, 0, 0, 0
  1900. };
  1901.  
  1902.  
  1903. /*******************************************************/
  1904. /*                                                     */
  1905. /* Midway "Guided Missile"                             */
  1906. /*                                                     */
  1907. /*******************************************************/
  1908.  
  1909. INPUT_PORTS_START( gmissile )
  1910.     PORT_START      /* IN0 */
  1911.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1912.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1913.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  1914.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  1915.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1916.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1917.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
  1918.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  1919.  
  1920.     PORT_START      /* IN1 */
  1921.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1922.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 )
  1923.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  1924.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  1925.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1926.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1927.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1928.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
  1929.  
  1930.     PORT_START      /* IN2 Dips & Coins */
  1931.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
  1932.     PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
  1933.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
  1934.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  1935.     PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
  1936.     PORT_DIPNAME( 0x0c, 0x0c, "Time" )
  1937.     PORT_DIPSETTING(    0x00, "60" )
  1938.     PORT_DIPSETTING(    0x08, "70" )
  1939.     PORT_DIPSETTING(    0x04, "80" )
  1940.     PORT_DIPSETTING(    0x0c, "90" )
  1941.     PORT_DIPNAME( 0x30, 0x00, "Extra Play" )
  1942.     PORT_DIPSETTING(    0x00, "500" )
  1943.     PORT_DIPSETTING(    0x20, "700" )
  1944.     PORT_DIPSETTING(    0x10, "1000" )
  1945.     PORT_DIPSETTING(    0x30, "None" )
  1946.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1947.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  1948. INPUT_PORTS_END
  1949.  
  1950.  
  1951. /*******************************************************/
  1952. /*                                                     */
  1953. /* Midway "280 ZZZAP"                                  */
  1954. /*                                                     */
  1955. /*******************************************************/
  1956.  
  1957. INPUT_PORTS_START( 280zzzap )
  1958.     PORT_START      /* IN0 */
  1959.     PORT_ANALOG( 0x0f, 0x00, IPT_PEDAL, 100, 64, 0x00, 0x0f )    /* accelerator */
  1960.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_TOGGLE )  /* shift */
  1961.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1962.     PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_COIN1 )
  1963.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_START1 )
  1964.  
  1965.     PORT_START      /* IN1 - Steering Wheel */
  1966.     PORT_ANALOG( 0xff, 0x7f, IPT_PADDLE | IPF_REVERSE, 100, 10, 0x01, 0xfe)
  1967.  
  1968.     PORT_START      /* IN2 Dips & Coins */
  1969.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  1970.     PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
  1971.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  1972.     PORT_DIPSETTING(    0x03, DEF_STR( 2C_3C ) )
  1973.     PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
  1974.     PORT_DIPNAME( 0x0c, 0x00, "Time" )
  1975.     PORT_DIPSETTING(    0x0c, "60" )
  1976.     PORT_DIPSETTING(    0x00, "80" )
  1977.     PORT_DIPSETTING(    0x08, "99" )
  1978.     PORT_DIPSETTING(    0x04, "Test Mode" )
  1979.     PORT_DIPNAME( 0x30, 0x00, "Extended Time" )
  1980.     PORT_DIPSETTING(    0x00, "Score >= 2.5" )
  1981.     PORT_DIPSETTING(    0x10, "Score >= 2" )
  1982.     PORT_DIPSETTING(    0x20, "None" )
  1983. /* 0x30 same as 0x20 */
  1984.     PORT_DIPNAME( 0xc0, 0x00, "Language")
  1985.     PORT_DIPSETTING(    0x00, "English" )
  1986.     PORT_DIPSETTING(    0x40, "German" )
  1987.     PORT_DIPSETTING(    0x80, "French" )
  1988.     PORT_DIPSETTING(    0xc0, "Spanish" )
  1989. INPUT_PORTS_END
  1990.  
  1991. static struct MachineDriver machine_driver_280zzzap =
  1992. {
  1993.     /* basic machine hardware */
  1994.     {
  1995.         {
  1996.             CPU_8080,
  1997.             2000000,        /* 2 Mhz? */
  1998.             invaders_readmem,invaders_writemem,invaders_readport,writeport_4_3,
  1999.             invaders_interrupt,2    /* two interrupts per frame */
  2000.         }
  2001.     },
  2002.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  2003.     1,      /* single CPU, no need for interleaving */
  2004.     0,
  2005.  
  2006.     /* video hardware */
  2007.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  2008.     0,      /* no gfxdecodeinfo - bitmapped display */
  2009.     32768+2, 0,        /* leave extra colors for the overlay */
  2010.     init_palette,
  2011.  
  2012.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  2013.     0,
  2014.     invaders_vh_start,
  2015.     invaders_vh_stop,
  2016.     invaders_vh_screenrefresh,
  2017.  
  2018.     /* sound hardware */
  2019.     0, 0, 0, 0
  2020. };
  2021.  
  2022.  
  2023. /*******************************************************/
  2024. /*                                                     */
  2025. /* Taito "Lupin III"                                   */
  2026. /*                                                     */
  2027. /*******************************************************/
  2028.  
  2029. INPUT_PORTS_START( lupin3 )
  2030.     PORT_START      /* IN0 */
  2031.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* selects color mode (dynamic vs. static) */
  2032.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )    /* something has to do with sound */
  2033.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  2034.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL)
  2035.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL )
  2036.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_COCKTAIL )
  2037.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_COCKTAIL )
  2038.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_COCKTAIL )
  2039.  
  2040.     PORT_START      /* IN1 */
  2041.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  2042.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  2043.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  2044.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  2045.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  2046.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY )
  2047.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY )
  2048.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY )
  2049.  
  2050.     PORT_START      /* DSW0 */
  2051.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  2052.     PORT_DIPSETTING(    0x00, "3" )
  2053.     PORT_DIPSETTING(    0x01, "4" )
  2054.     PORT_DIPSETTING(    0x02, "5" )
  2055.     PORT_DIPSETTING(    0x03, "6" )
  2056.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )
  2057.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  2058.     PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
  2059.     PORT_DIPNAME( 0x08, 0x00, "Bags to Collect" )
  2060.     PORT_DIPSETTING(    0x08, "2" )
  2061.     PORT_DIPSETTING(    0x00, "8" )
  2062.     PORT_DIPNAME( 0x10, 0x00, "Language" )
  2063.     PORT_DIPSETTING(    0x00, "English" )
  2064.     PORT_DIPSETTING(    0x10, "Japanese" )
  2065.     PORT_BIT( 0x20, IP_ACTIVE_HIGH,  IPT_UNUSED )
  2066.     PORT_BIT( 0x40, IP_ACTIVE_HIGH,  IPT_UNUSED )
  2067.     PORT_BITX(0x80,     0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
  2068.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2069.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  2070. INPUT_PORTS_END
  2071.  
  2072.  
  2073. static struct MachineDriver machine_driver_lupin3 =
  2074. {
  2075.     /* basic machine hardware */
  2076.     {
  2077.         {
  2078.             CPU_8080,
  2079.             2000000,        /* 2 Mhz? */
  2080.             schaser_readmem,schaser_writemem,invaders_readport,writeport_2_4,
  2081.             invaders_interrupt,2    /* two interrupts per frame */
  2082.         }
  2083.     },
  2084.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  2085.     1,      /* single CPU, no need for interleaving */
  2086.     0,
  2087.  
  2088.     /* video hardware */
  2089.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  2090.     0,      /* no gfxdecodeinfo - bitmapped display */
  2091.     8, 0,
  2092.     invadpt2_vh_convert_color_prom,
  2093.  
  2094.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  2095.     0,
  2096.     invaders_vh_start,
  2097.     invaders_vh_stop,
  2098.     invaders_vh_screenrefresh,
  2099.  
  2100.     /* sound hardware */
  2101.     0, 0, 0, 0
  2102. };
  2103.  
  2104.  
  2105. /*******************************************************/
  2106. /*                                                     */
  2107. /* Nintendo "Heli Fire"                                */
  2108. /*                                                     */
  2109. /*******************************************************/
  2110.  
  2111. static struct MemoryReadAddress helifire_readmem[] =
  2112. {
  2113.     { 0x0000, 0x27ff, MRA_ROM },
  2114.     { 0x4200, 0x7fff, MRA_RAM },
  2115.     { 0xc200, 0xddff, MRA_RAM },
  2116.     { -1 }  /* end of table */
  2117. };
  2118.  
  2119. static struct MemoryWriteAddress helifire_writemem[] =
  2120. {
  2121.     { 0x0000, 0x27ff, MWA_ROM },
  2122.     { 0x4200, 0x5dff, invaders_videoram_w, &videoram, &videoram_size },
  2123.     { 0x5e00, 0x7fff, MWA_RAM },
  2124.     { 0xc200, 0xddff, helifire_colorram_w, &colorram },
  2125.     { -1 }  /* end of table */
  2126. };
  2127.  
  2128. INPUT_PORTS_START( helifire )
  2129.     PORT_START      /* 00 Main Controls */
  2130.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY  )
  2131.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  2132.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
  2133.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  2134.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  2135.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
  2136.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
  2137.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
  2138.  
  2139.     PORT_START      /* 01 Player 2 Controls */
  2140.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  2141.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  2142.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  2143.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  2144.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  2145.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
  2146.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
  2147.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
  2148.  
  2149.     PORT_START      /* Start and Coin Buttons */
  2150.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
  2151.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
  2152.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  2153.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
  2154.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) /* Marked for   */
  2155.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) /* Expansion    */
  2156.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) /* on Schematic */
  2157.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  2158.  
  2159.     PORT_START      /* DSW */
  2160.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  2161.     PORT_DIPSETTING(    0x00, "3" )
  2162.     PORT_DIPSETTING(    0x01, "4" )
  2163.     PORT_DIPSETTING(    0x02, "5" )
  2164.     PORT_DIPSETTING(    0x03, "6" )
  2165.     PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
  2166.     PORT_DIPSETTING(    0x0c, "5000" )
  2167.     PORT_DIPSETTING(    0x04, "6000" )
  2168.     PORT_DIPSETTING(    0x08, "8000" )
  2169.     PORT_DIPSETTING(    0x00, "10000" )
  2170.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Coinage ) )
  2171.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  2172.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  2173.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
  2174.     PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
  2175.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  2176. INPUT_PORTS_END
  2177.  
  2178.  
  2179. static struct MachineDriver machine_driver_helifire =
  2180. {
  2181.     /* basic machine hardware */
  2182.     {
  2183.         {
  2184.             CPU_8080,
  2185.             20160000/8,        /* 2.52 MHz */
  2186.             helifire_readmem,helifire_writemem,sheriff_readport,writeport_2_3,
  2187.             invaders_interrupt,2    /* two interrupts per frame */
  2188.         }
  2189.     },
  2190.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  2191.     1,      /* single CPU, no need for interleaving */
  2192.     init_machine_helifire,
  2193.  
  2194.     /* video hardware */
  2195.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  2196.     0,      /* no gfxdecodeinfo - bitmapped display */
  2197.     8, 0,
  2198.     helifire_vh_convert_color_prom,
  2199.  
  2200.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  2201.     0,
  2202.     invaders_vh_start,
  2203.     invaders_vh_stop,
  2204.     invaders_vh_screenrefresh,
  2205.  
  2206.     /* sound hardware */
  2207.     0, 0, 0, 0
  2208. };
  2209.  
  2210.  
  2211. /*******************************************************/
  2212. /*                                                     */
  2213. /* Nintendo "Space Fever (Color)"                      */
  2214. /*                                                     */
  2215. /*******************************************************/
  2216.  
  2217. INPUT_PORTS_START( spacefev )
  2218.     PORT_START      /* 00 Main Controls */
  2219.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1)
  2220.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  2221.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  2222.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 )
  2223.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
  2224.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2225.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2226.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  2227.  
  2228.     PORT_START      /* 01 Player 2 Controls */
  2229.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  2230.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  2231.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  2232.     PORT_BITX(0x08, 0x00, 0, "Start Game A", KEYCODE_Q, IP_JOY_NONE )
  2233.     PORT_BITX(0x10, 0x00, 0, "Start Game B", KEYCODE_W, IP_JOY_NONE )
  2234.     PORT_BITX(0x20, 0x00, 0, "Start Game C", KEYCODE_E, IP_JOY_NONE )
  2235.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
  2236.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) /* If on low the game doesn't start */
  2237.  
  2238.     PORT_START      /* DSW */
  2239.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  2240.     PORT_DIPSETTING(    0x00, "3" )
  2241.     PORT_DIPSETTING(    0x01, "4" )
  2242.     PORT_DIPSETTING(    0x02, "5" )
  2243.     PORT_DIPSETTING(    0x03, "6" )
  2244. //    PORT_DIPNAME( 0xfc, 0x00, DEF_STR( Unknown ) )
  2245. //    PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  2246. //    PORT_DIPSETTING(    0xfc, DEF_STR( Off ) )
  2247. INPUT_PORTS_END
  2248.  
  2249.  
  2250. /*******************************************************/
  2251. /*                                                     */
  2252. /* Taito "Polaris"                                     */
  2253. /*                                                     */
  2254. /*******************************************************/
  2255.  
  2256. INPUT_PORTS_START( polaris )
  2257.     PORT_START      /* IN0 */
  2258.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2259.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2260.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  2261.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2262.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2263.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2264.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2265.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN)
  2266.  
  2267.     PORT_START      /* IN1 */
  2268.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  2269.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  2270.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  2271.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  2272.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  2273.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  2274.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  2275.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
  2276.  
  2277.     PORT_START      /* DSW0 */
  2278.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  2279.     PORT_DIPSETTING(    0x00, "3" )
  2280.     PORT_DIPSETTING(    0x01, "4" )
  2281.     PORT_DIPSETTING(    0x02, "5" )
  2282.     PORT_DIPSETTING(    0x03, "6" )
  2283.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  2284.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  2285.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  2286.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )
  2287.     PORT_DIPSETTING(    0x08, "1000" )
  2288.     PORT_DIPSETTING(    0x00, "1500" )
  2289.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  2290.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
  2291.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
  2292.     PORT_DIPNAME( 0x80, 0x00, "High Score Preset Mode" )
  2293.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2294.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  2295.  
  2296.     PORT_START        /* Dummy port for cocktail mode */
  2297.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  2298.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  2299.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  2300. INPUT_PORTS_END
  2301.  
  2302.  
  2303. static struct MachineDriver machine_driver_polaris =
  2304. {
  2305.     /* basic machine hardware */
  2306.     {
  2307.         {
  2308.             CPU_8080,
  2309.             1996800,        /* 19.968Mhz / 10 */
  2310.             schaser_readmem,schaser_writemem,invaders_readport,writeport_0_3,
  2311.             invaders_interrupt,2    /* two interrupts per frame */
  2312.         }
  2313.     },
  2314.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  2315.     1,      /* single CPU, no need for interleaving */
  2316.     init_machine_polaris,
  2317.  
  2318.     /* video hardware */
  2319.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  2320.     0,      /* no gfxdecodeinfo - bitmapped display */
  2321.     8, 0,
  2322.     invadpt2_vh_convert_color_prom,
  2323.  
  2324.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  2325.     0,
  2326.     invaders_vh_start,
  2327.     invaders_vh_stop,
  2328.     invaders_vh_screenrefresh,
  2329.  
  2330.     /* sound hardware */
  2331.     0,0,0,0
  2332. };
  2333.  
  2334.  
  2335. /*******************************************************/
  2336. /*                                                     */
  2337. /* Midway "Laguna Racer"                               */
  2338. /*                                                     */
  2339. /*******************************************************/
  2340.  
  2341. INPUT_PORTS_START( lagunar )
  2342.     PORT_START      /* IN0 */
  2343.     PORT_ANALOG( 0x0f, 0x00, IPT_PEDAL, 100, 64, 0x00, 0x0f )    /* accelerator */
  2344.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_TOGGLE )  /* shift */
  2345.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2346.     PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_COIN1 )
  2347.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_START1 )
  2348.  
  2349.     PORT_START      /* IN1 - Steering Wheel */
  2350.     PORT_ANALOG( 0xff, 0x7f, IPT_PADDLE | IPF_REVERSE, 100, 10, 0x01, 0xfe)
  2351.  
  2352.     PORT_START      /* IN2 Dips & Coins */
  2353.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )
  2354.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
  2355.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  2356.     PORT_DIPSETTING(    0x03, DEF_STR( 2C_3C ) )
  2357.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
  2358.     PORT_DIPNAME( 0x0c, 0x0c, "Time" )
  2359.     PORT_DIPSETTING(    0x00, "45" )
  2360.     PORT_DIPSETTING(    0x04, "60" )
  2361.     PORT_DIPSETTING(    0x08, "75" )
  2362.     PORT_DIPSETTING(    0x0c, "90" )
  2363.     PORT_DIPNAME( 0x30, 0x00, "Extended Time" )
  2364.     PORT_DIPSETTING(    0x00, "350" )
  2365.     PORT_DIPSETTING(    0x10, "400" )
  2366.     PORT_DIPSETTING(    0x20, "450" )
  2367.     PORT_DIPSETTING(    0x30, "500" )
  2368.     PORT_DIPNAME( 0xc0, 0x00, "Test Modes")
  2369.     PORT_DIPSETTING(    0x00, "Play Mode" )
  2370.     PORT_DIPSETTING(    0x40, "RAM/ROM" )
  2371.     PORT_DIPSETTING(    0x80, "Steering" )
  2372.     PORT_DIPSETTING(    0xc0, "No Extended Play" )
  2373. INPUT_PORTS_END
  2374.  
  2375.  
  2376. /*******************************************************/
  2377. /*                                                     */
  2378. /* Midway "Phantom II"                                 */
  2379. /*                                                     */
  2380. /* To Do : little fluffy clouds                        */
  2381. /*         you still see them sometimes in the desert  */
  2382. /*                                                     */
  2383. /*******************************************************/
  2384.  
  2385. INPUT_PORTS_START( phantom2 )
  2386.     PORT_START      /* IN0 */
  2387.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2388.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2389.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2390.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2391.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2392.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2393.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2394.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2395.  
  2396.     PORT_START      /* IN1 */
  2397.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
  2398.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
  2399.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
  2400.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
  2401.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  2402.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
  2403.  
  2404.     PORT_START      /* IN2 Dips & Coins */
  2405.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) )
  2406.     PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
  2407.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  2408.     PORT_DIPNAME( 0x06, 0x06, "Time" )
  2409.     PORT_DIPSETTING(    0x00, "45sec 20sec 20" )
  2410.     PORT_DIPSETTING(    0x02, "60sec 25sec 25" )
  2411.     PORT_DIPSETTING(    0x04, "75sec 30sec 30" )
  2412.     PORT_DIPSETTING(    0x06, "90sec 35sec 35" )
  2413.     PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
  2414.  
  2415. INPUT_PORTS_END
  2416.  
  2417.  
  2418. /*******************************************************/
  2419. /*                                                     */
  2420. /* Midway "Dog Patch"                                  */
  2421. /*                                                     */
  2422. /*******************************************************/
  2423.  
  2424. INPUT_PORTS_START( dogpatch )
  2425.     PORT_START      /* IN0 */
  2426.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  2427.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
  2428.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
  2429.     PORT_ANALOG( 0x38, 0x1f, IPT_AD_STICK_X |IPF_PLAYER2, 25, 10, 0x05, 0x48)
  2430.     /* 6 bit horiz encoder - Gray's binary? */
  2431.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
  2432.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
  2433.  
  2434.     PORT_START      /* IN1 */
  2435.     PORT_ANALOG( 0x3f, 0x1f, IPT_AD_STICK_X, 25, 10, 0x01, 0x3e) /* 6 bit horiz encoder - Gray's binary? */
  2436.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
  2437.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
  2438.  
  2439.     PORT_START      /* IN2 Dips & Coins */
  2440.     PORT_DIPNAME( 0x03, 0x00, "# Cans" )
  2441.     PORT_DIPSETTING(    0x03, "10" )
  2442.     PORT_DIPSETTING(    0x02, "15" )
  2443.     PORT_DIPSETTING(    0x01, "20" )
  2444.     PORT_DIPSETTING(    0x00, "25" )
  2445.     PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coinage ) )
  2446.     PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
  2447.     PORT_DIPSETTING(    0x0c, DEF_STR( 2C_2C ) )
  2448.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  2449.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
  2450.     PORT_DIPNAME( 0x10, 0x00, "Extended Play" )
  2451.     PORT_DIPSETTING(    0x10, "3 extra cans" )
  2452.     PORT_DIPSETTING(    0x00, "5 extra cans" )
  2453.     PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
  2454.     PORT_DIPNAME( 0xc0, 0x00, "Extended Play" )
  2455.     PORT_DIPSETTING(    0xc0, "150 Pts" )
  2456.     PORT_DIPSETTING(    0x80, "175 Pts" )
  2457.     PORT_DIPSETTING(    0x40, "225 Pts" )
  2458.     PORT_DIPSETTING(    0x00, "275 Pts" )
  2459. INPUT_PORTS_END
  2460.  
  2461.  
  2462. /*******************************************************/
  2463. /*                                                     */
  2464. /* Midway "4 Player Bowling"                           */
  2465. /*                                                     */
  2466. /*******************************************************/
  2467.  
  2468. static struct IOReadPort bowler_readport[] =
  2469. {
  2470.     { 0x01, 0x01, invaders_shift_data_comp_r },
  2471.     { 0x02, 0x02, input_port_0_r },                /* dip switch */
  2472.     { 0x04, 0x04, input_port_1_r },                /* coins / switches */
  2473.     { 0x05, 0x05, input_port_2_r },                /* ball vert */
  2474.     { 0x06, 0x06, input_port_3_r },                /* ball horz */
  2475.     { -1 }  /* end of table */
  2476. };
  2477.  
  2478. INPUT_PORTS_START( bowler )
  2479.     PORT_START      /* IN2 */
  2480.     PORT_DIPNAME( 0x03, 0x00, "Language" )
  2481.     PORT_DIPSETTING(    0x00, "English" )
  2482.     PORT_DIPSETTING(    0x01, "French" )
  2483.     PORT_DIPSETTING(    0x02, "German" )
  2484.   /*PORT_DIPSETTING(    0x03, "German" )*/
  2485.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  2486.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  2487.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  2488.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  2489.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  2490.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  2491.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Coinage ) )
  2492.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  2493.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  2494.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  2495.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  2496.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  2497.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* effects button 1 */
  2498.     PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
  2499.  
  2500.     PORT_START      /* IN4 */
  2501.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  2502.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  2503.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  2504.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
  2505.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
  2506.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
  2507.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
  2508.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
  2509.  
  2510.     PORT_START      /* IN5 */
  2511.     PORT_ANALOG( 0xff, 0, IPT_TRACKBALL_Y | IPF_REVERSE, 10, 10, 0, 0)
  2512.  
  2513.     PORT_START      /* IN6 */
  2514.     PORT_ANALOG( 0xff, 0, IPT_TRACKBALL_X, 10, 10, 0, 0)
  2515. INPUT_PORTS_END
  2516.  
  2517. static struct MachineDriver machine_driver_bowler =
  2518. {
  2519.     /* basic machine hardware */
  2520.     {
  2521.         {
  2522.             CPU_8080,
  2523.             2000000,        /* 2 Mhz */
  2524.             invaders_readmem,invaders_writemem,bowler_readport,writeport_1_2,
  2525.             invaders_interrupt,2    /* two interrupts per frame */
  2526.         }
  2527.     },
  2528.     60, DEFAULT_60HZ_VBLANK_DURATION,
  2529.     1,      /* single CPU, no need for interleaving */
  2530.     0,
  2531.  
  2532.     /* video hardware */
  2533.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  2534.     0,      /* no gfxdecodeinfo - bitmapped display */
  2535.     32768+2, 0,        /* leave extra colors for the overlay */
  2536.     init_palette,
  2537.  
  2538.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  2539.     0,
  2540.     invaders_vh_start,
  2541.     invaders_vh_stop,
  2542.     invaders_vh_screenrefresh,
  2543.  
  2544.     /* sound hardware */
  2545.     0, 0, 0, 0,
  2546. };
  2547.  
  2548.  
  2549. /*******************************************************/
  2550. /*                                                     */
  2551. /* Midway "Shuffleboard"                               */
  2552. /*                                                     */
  2553. /*******************************************************/
  2554.  
  2555. static struct IOReadPort shuffle_readport[] =
  2556. {
  2557.     { 0x01, 0x01, invaders_shift_data_r },
  2558.     { 0x02, 0x02, input_port_0_r },                /* dip switch */
  2559.     { 0x04, 0x04, input_port_1_r },                /* coins / switches */
  2560.     { 0x05, 0x05, input_port_2_r },                /* ball vert */
  2561.     { 0x06, 0x06, input_port_3_r },                /* ball horz */
  2562.     { -1 }  /* end of table */
  2563. };
  2564.  
  2565. INPUT_PORTS_START( shuffle )
  2566.     PORT_START      /* DSW0 */
  2567.     PORT_DIPNAME( 0x03, 0x00, "Language" )
  2568.     PORT_DIPSETTING(    0x00, "English" )
  2569.     PORT_DIPSETTING(    0x01, "French" )
  2570.     PORT_DIPSETTING(    0x02, "German" )
  2571.   /*PORT_DIPSETTING(    0x03, "German" )*/
  2572.     PORT_DIPNAME( 0x0c, 0x04, "Points to Win" )
  2573.     PORT_DIPSETTING(    0x00, "25" )
  2574.     PORT_DIPSETTING(    0x04, "35" )
  2575.     PORT_DIPSETTING(    0x08, "40" )
  2576.     PORT_DIPSETTING(    0x0c, "50" )
  2577.     PORT_DIPNAME( 0x30, 0x10, DEF_STR( Coinage ) )
  2578.     PORT_DIPSETTING(    0x30, "2 Coins/1 Player  4 Coins/2 Players" )
  2579.     PORT_DIPSETTING(    0x20, "2 Coins/1 or 2 Players" )
  2580.     PORT_DIPSETTING(    0x10, "1 Coin/1 Player  2 Coins/2 Players" )
  2581.     PORT_DIPSETTING(    0x00, "1 Coin/1 or 2 Players" )
  2582.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )    /* time limit? */
  2583.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2584.     PORT_DIPSETTING(    0x40, DEF_STR( On ) )
  2585.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  2586.  
  2587.     PORT_START      /* IN1 */
  2588.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  2589.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
  2590.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
  2591.     PORT_BITX(0x08, IP_ACTIVE_LOW, IPT_BUTTON1, "Game Select", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  2592.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
  2593.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
  2594.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
  2595.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
  2596.  
  2597.     PORT_START      /* IN2 */
  2598.     PORT_ANALOG( 0xff, 0, IPT_TRACKBALL_Y, 10, 10, 0, 0)
  2599.  
  2600.     PORT_START      /* IN3 */
  2601.     PORT_ANALOG( 0xff, 0, IPT_TRACKBALL_X | IPF_REVERSE, 10, 10, 0, 0)
  2602. INPUT_PORTS_END
  2603.  
  2604. static struct MachineDriver machine_driver_shuffle =
  2605. {
  2606.     /* basic machine hardware */
  2607.     {
  2608.         {
  2609.             CPU_8080,
  2610.             2000000,        /* 2 Mhz */
  2611.             invaders_readmem,invaders_writemem,shuffle_readport,writeport_1_2,
  2612.             invaders_interrupt,2    /* two interrupts per frame */
  2613.         }
  2614.     },
  2615.     60, DEFAULT_60HZ_VBLANK_DURATION,
  2616.     1,      /* single CPU, no need for interleaving */
  2617.     0,
  2618.  
  2619.     /* video hardware */
  2620.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  2621.     0,      /* no gfxdecodeinfo - bitmapped display */
  2622.     32768+2, 0,        /* leave extra colors for the overlay */
  2623.     init_palette,
  2624.  
  2625.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  2626.     0,
  2627.     invaders_vh_start,
  2628.     invaders_vh_stop,
  2629.     invaders_vh_screenrefresh,
  2630.  
  2631.     /* sound hardware */
  2632.     0, 0, 0, 0,
  2633. };
  2634.  
  2635.  
  2636. /*******************************************************/
  2637. /*                                                     */
  2638. /* Midway "Sea Wolf"                                   */
  2639. /*                                                     */
  2640. /*******************************************************/
  2641.  
  2642. static struct IOReadPort seawolf_readport[] =
  2643. {
  2644.     { 0x00, 0x00, invaders_shift_data_rev_r },
  2645.     { 0x01, 0x01, input_port_0_r },
  2646.     { 0x02, 0x02, input_port_1_r },
  2647.     { 0x03, 0x03, invaders_shift_data_r },
  2648.     { -1 }  /* end of table */
  2649. };
  2650.  
  2651. INPUT_PORTS_START( seawolf )
  2652.     PORT_START      /* IN0 */
  2653.     PORT_ANALOG( 0x1f, 0x01, IPT_PADDLE, 20, 5, 0, 0x1f)
  2654.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  2655.     PORT_DIPNAME( 0xc0, 0x00, "Time" )
  2656.     PORT_DIPSETTING(    0x00, "61" )
  2657.     PORT_DIPSETTING(    0x40, "71" )
  2658.     PORT_DIPSETTING(    0x80, "81" )
  2659.     PORT_DIPSETTING(    0xc0, "91" )
  2660.  
  2661.     PORT_START      /* IN1 Dips & Coins */
  2662.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  2663.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 )
  2664.     PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coinage ) )
  2665.     PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) )
  2666.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  2667.     PORT_DIPSETTING(    0x0c, DEF_STR( 2C_3C ) )
  2668.     PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
  2669.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_TILT ) // Reset High Scores
  2670.     PORT_DIPNAME( 0xe0, 0x20, "Extended Play" )
  2671.     PORT_DIPSETTING(    0x00, "None" )
  2672.     PORT_DIPSETTING(    0x20, "2000" )
  2673.     PORT_DIPSETTING(    0x40, "3000" )
  2674.     PORT_DIPSETTING(    0x60, "4000" )
  2675.     PORT_DIPSETTING(    0x80, "5000" )
  2676.     PORT_DIPSETTING(    0xa0, "6000" )
  2677.     PORT_DIPSETTING(    0xc0, "7000" )
  2678.     PORT_DIPSETTING(    0xe0, "Test Mode" )
  2679. INPUT_PORTS_END
  2680.  
  2681. static struct MachineDriver machine_driver_seawolf =
  2682. {
  2683.     /* basic machine hardware */
  2684.     {
  2685.         {
  2686.             CPU_8080,
  2687.             2000000,        /* 2 Mhz? */
  2688.             invaders_readmem,invaders_writemem,seawolf_readport,writeport_4_3,
  2689.             invaders_interrupt,2    /* two interrupts per frame */
  2690.         }
  2691.     },
  2692.     60, DEFAULT_60HZ_VBLANK_DURATION,
  2693.     1,      /* single CPU, no need for interleaving */
  2694.     init_machine_seawolf,
  2695.  
  2696.     /* video hardware */
  2697.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  2698.     0,      /* no gfxdecodeinfo - bitmapped display */
  2699.     32768+2, 0,        /* leave extra colors for the overlay */
  2700.     init_palette,
  2701.  
  2702.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  2703.     0,
  2704.     invaders_vh_start,
  2705.     invaders_vh_stop,
  2706.     invaders_vh_screenrefresh,
  2707.  
  2708.     /* sound hardware */
  2709.     0, 0, 0, 0
  2710. };
  2711.  
  2712.  
  2713. /*******************************************************/
  2714. /*                                                     */
  2715. /* Midway "Blue Shark"                                 */
  2716. /*                                                     */
  2717. /*******************************************************/
  2718.  
  2719. INPUT_PORTS_START( blueshrk )
  2720.     PORT_START      /* IN0 */
  2721.     PORT_ANALOG( 0x7f, 0x45, IPT_PADDLE, 100, 10, 0xf, 0x7f)
  2722.  
  2723.     PORT_START      /* IN1 Dips & Coins */
  2724.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
  2725.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 )
  2726.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2727.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
  2728.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2729.     PORT_DIPNAME( 0x60, 0x20, "Replay" )
  2730.     PORT_DIPSETTING(    0x20, "14000" )
  2731.     PORT_DIPSETTING(    0x40, "18000" )
  2732.     PORT_DIPSETTING(    0x60, "22000" )
  2733.     PORT_DIPSETTING(    0x00, "None" )
  2734.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  2735. INPUT_PORTS_END
  2736.  
  2737. static struct MachineDriver machine_driver_blueshrk =
  2738. {
  2739.     /* basic machine hardware */
  2740.     {
  2741.         {
  2742.             CPU_8080,
  2743.             2000000,
  2744.             invaders_readmem,invaders_writemem,seawolf_readport,writeport_1_2,
  2745.             invaders_interrupt,2    /* two interrupts per frame */
  2746.         }
  2747.     },
  2748.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  2749.     1,      /* single CPU, no need for interleaving */
  2750.     0,
  2751.  
  2752.     /* video hardware */
  2753.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  2754.     0,      /* no gfxdecodeinfo - bitmapped display */
  2755.     32768+2, 0,        /* leave extra colors for the overlay */
  2756.     init_palette,
  2757.  
  2758.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  2759.     0,
  2760.     invaders_vh_start,
  2761.     invaders_vh_stop,
  2762.     invaders_vh_screenrefresh,
  2763.  
  2764.     /* sound hardware */
  2765.     0, 0, 0, 0,
  2766. };
  2767.  
  2768.  
  2769. /*******************************************************/
  2770. /*                                                     */
  2771. /* Midway "Desert Gun"                                 */
  2772. /*                                                     */
  2773. /*******************************************************/
  2774.  
  2775. INPUT_PORTS_START( desertgu )
  2776.     PORT_START      /* IN0 */
  2777.     PORT_ANALOG( 0x7f, 0x45, IPT_AD_STICK_X, 70, 10, 0xf, 0x7f)
  2778.  
  2779.     PORT_START
  2780.     PORT_DIPNAME( 0x03, 0x00, "Time" )
  2781.     PORT_DIPSETTING(    0x00, "40" )
  2782.     PORT_DIPSETTING(    0x01, "50" )
  2783.     PORT_DIPSETTING(    0x02, "60" )
  2784.     PORT_DIPSETTING(    0x03, "70" )
  2785.     PORT_DIPNAME( 0x0c, 0x00, "Language" )
  2786.     PORT_DIPSETTING(    0x00, "English" )
  2787.     PORT_DIPSETTING(    0x04, "German" )
  2788.     PORT_DIPSETTING(    0x08, "French" )
  2789.     PORT_DIPSETTING(    0x0c, "Norwegian?" )
  2790.     PORT_DIPNAME( 0x30, 0x00, "Extended Play" )
  2791.     PORT_DIPSETTING(    0x00, "5000" )
  2792.     PORT_DIPSETTING(    0x10, "7000" )
  2793.     PORT_DIPSETTING(    0x20, "9000" )
  2794.     PORT_DIPSETTING(    0x30, "Test Mode" )
  2795.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
  2796.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
  2797.  
  2798.     PORT_START      /* IN2 */
  2799.     PORT_ANALOG( 0x7f, 0x45, IPT_AD_STICK_Y, 70, 10, 0xf, 0x7f)
  2800. INPUT_PORTS_END
  2801.  
  2802.  
  2803. static struct MachineDriver machine_driver_desertgu =
  2804. {
  2805.     /* basic machine hardware */
  2806.     {
  2807.         {
  2808.             CPU_8080,
  2809.             2000000,
  2810.             invaders_readmem,invaders_writemem,seawolf_readport,writeport_1_2,
  2811.             invaders_interrupt,2    /* two interrupts per frame */
  2812.         }
  2813.     },
  2814.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  2815.     1,      /* single CPU, no need for interleaving */
  2816.     init_machine_desertgu,
  2817.  
  2818.     /* video hardware */
  2819.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  2820.     0,      /* no gfxdecodeinfo - bitmapped display */
  2821.     32768+2, 0,        /* leave extra colors for the overlay */
  2822.     init_palette,
  2823.  
  2824.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  2825.     0,
  2826.     invaders_vh_start,
  2827.     invaders_vh_stop,
  2828.     invaders_vh_screenrefresh,
  2829.  
  2830.     /* sound hardware */
  2831.     0, 0, 0, 0,
  2832. };
  2833.  
  2834.  
  2835. /*******************************************************/
  2836. /*                                                     */
  2837. /* Midway "Extra Innings"                              */
  2838. /*                                                     */
  2839. /*******************************************************/
  2840.  
  2841. /*
  2842.  * The cocktail version has independent bat, pitch, and field controls
  2843.  * while the upright version ties the pairs of inputs together through
  2844.  * jumpers in the wiring harness.
  2845.  */
  2846. INPUT_PORTS_START( einnings )
  2847.     PORT_START      /* IN0 */
  2848.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )            /* home bat */
  2849.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )    /* home fielders left */
  2850.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )    /* home fielders right */
  2851.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )        /* home pitch left */
  2852.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )    /* home pitch right */
  2853.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )            /* home pitch slow */
  2854.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2)            /* home pitch fast */
  2855.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  2856.  
  2857.     PORT_START      /* IN1 */
  2858.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )        /* vistor bat */
  2859.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )    /* vistor fielders left */
  2860.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )    /* visitor fielders right */
  2861.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    /* visitor pitch left */
  2862.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )    /* visitor pitch right */
  2863.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )        /* visitor pitch slow */
  2864.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )        /* visitor pitch fast */
  2865.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  2866.  
  2867.     PORT_START      /* IN2 Dips & Coins */
  2868.     PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ))
  2869.     PORT_DIPSETTING(    0x02, "2C/1 In (1 or 2 Players)" )
  2870.     PORT_DIPSETTING(    0x03, "2C/1 In 4C/3 In (1 or 2 Pls)" )
  2871.     PORT_DIPSETTING(    0x00, "1 Coin/1 Inning (1 or 2 Pls)" )
  2872.     PORT_DIPSETTING(    0x01, "1C/1 In 2C/3 In (1 or 2 Pls)" )
  2873.     PORT_DIPSETTING(    0x04, "1C/1Pl 2C/2Pl 4C/3Inn" )
  2874.     PORT_DIPSETTING(    0x05, "2C/1Pl 4C/2Pl 8C/3Inn" )
  2875. /* 0x06 and 0x07 same as 0x00 */
  2876.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2877.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  2878.     PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
  2879.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  2880. INPUT_PORTS_END
  2881.  
  2882.  
  2883. /*******************************************************/
  2884. /*                                                     */
  2885. /* Midway "Amazing Maze"                               */
  2886. /*                                                     */
  2887. /*******************************************************/
  2888.  
  2889. INPUT_PORTS_START( maze )
  2890.     PORT_START      /* IN0 */
  2891.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER1 )
  2892.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
  2893.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER1 )
  2894.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER1 )
  2895.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER2 )
  2896.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  2897.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER2 )
  2898.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER2 )
  2899.  
  2900.     PORT_START      /* IN1 */
  2901.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
  2902.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  2903.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2904.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1  )
  2905.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2906.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  2907.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN)
  2908.     PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
  2909.  
  2910.     PORT_START      /* DSW0 - Never read (?) */
  2911.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  2912.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2913.     PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  2914.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  2915.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2916.     PORT_DIPSETTING(    0x02, DEF_STR( On ) )
  2917.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  2918.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2919.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  2920.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  2921.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2922.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  2923.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  2924.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2925.     PORT_DIPSETTING(    0x10, DEF_STR( On ) )
  2926.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  2927.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2928.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  2929.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  2930.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2931.     PORT_DIPSETTING(    0x40, DEF_STR( On ) )
  2932.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  2933.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  2934.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  2935. INPUT_PORTS_END
  2936.  
  2937.  
  2938. /*******************************************************/
  2939. /*                                                     */
  2940. /* Midway "Tornado Baseball"                           */
  2941. /*                                                     */
  2942. /*******************************************************/
  2943.  
  2944. INPUT_PORTS_START( tornbase )
  2945.     PORT_START      /* IN0 */
  2946.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_PLAYER1)
  2947.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER2 )
  2948.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  2949.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER2 )
  2950.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER2 )
  2951.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  2952.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER2 )
  2953.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN)
  2954.  
  2955.     PORT_START      /* IN1 */
  2956.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_PLAYER2)
  2957.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER1 )
  2958.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
  2959.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER1 )
  2960.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER1 )
  2961.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER1 )
  2962.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_PLAYER1)
  2963.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN)
  2964.  
  2965.     PORT_START      /* DSW0 */
  2966.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  2967.     PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  2968.     PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  2969.     PORT_DIPNAME( 0x78, 0x40, DEF_STR( Coinage ) )
  2970.     PORT_DIPSETTING(    0x18, "4 Coins/1 Inning 32/9" )
  2971.     PORT_DIPSETTING(    0x10, "3 Coins/1 Inning 24/9" )
  2972.     PORT_DIPSETTING(    0x38, "4 Coins/2 Innings 16/9" )
  2973.     PORT_DIPSETTING(    0x08, "2 Coins/1 Inning 16/9" )
  2974.     PORT_DIPSETTING(    0x30, "3 Coins/2 Innings 12/9" )
  2975.     PORT_DIPSETTING(    0x28, "2 Coins/2 Innings 8/9" )
  2976.     PORT_DIPSETTING(    0x00, "1 Coin/1 Inning 8/9" )
  2977.     PORT_DIPSETTING(    0x58, "4 Coins/4 Innings 8/9" )
  2978.     PORT_DIPSETTING(    0x50, "3 Coins/4 Innings 6/9" )
  2979.     PORT_DIPSETTING(    0x48, "2 Coins/4 Innings 4/9" )
  2980.     PORT_DIPSETTING(    0x20, "1 Coin/2 Innings 4/9" )
  2981.     PORT_DIPSETTING(    0x40, "1 Coin/4 Innings 2/9" )
  2982.     PORT_DIPSETTING(    0x78, "4 Coins/9 Innings" )
  2983.     PORT_DIPSETTING(    0x70, "3 Coins/9 Innings" )
  2984.     PORT_DIPSETTING(    0x68, "2 Coins/9 Innings" )
  2985.     PORT_DIPSETTING(    0x60, "1 Coin/9 Innings" )
  2986.     PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
  2987. INPUT_PORTS_END
  2988.  
  2989. static struct MachineDriver machine_driver_tornbase =
  2990. {
  2991.     /* basic machine hardware */
  2992.     {
  2993.         {
  2994.             CPU_8080,
  2995.             2000000,        /* 2 Mhz? */
  2996.             invaders_readmem,invaders_writemem,invaders_readport,writeport_2_4,
  2997.             invaders_interrupt,2    /* two interrupts per frame */
  2998.         }
  2999.     },
  3000.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  3001.     1,      /* single CPU, no need for interleaving */
  3002.     0,
  3003.  
  3004.     /* video hardware */
  3005.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  3006.     0,      /* no gfxdecodeinfo - bitmapped display */
  3007.     32768+2, 0,        /* leave extra colors for the overlay */
  3008.     init_palette,
  3009.  
  3010.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  3011.     0,
  3012.     invaders_vh_start,
  3013.     invaders_vh_stop,
  3014.     invaders_vh_screenrefresh,
  3015.  
  3016.     /* sound hardware */
  3017.     0, 0, 0, 0
  3018. };
  3019.  
  3020.  
  3021. /*******************************************************/
  3022. /*                                                     */
  3023. /* Midway "Checkmate"                                  */
  3024. /*                                                     */
  3025. /*******************************************************/
  3026.  
  3027. static struct IOReadPort checkmat_readport[] =
  3028. {
  3029.     { 0x00, 0x00, input_port_0_r },
  3030.     { 0x01, 0x01, input_port_1_r },
  3031.     { 0x02, 0x02, input_port_2_r },
  3032.     { 0x03, 0x03, input_port_3_r },
  3033.     { -1 }  /* end of table */
  3034. };
  3035.  
  3036. static struct IOWritePort checkmat_writeport[] =
  3037. {
  3038.     { -1 }  /* end of table */
  3039. };
  3040.  
  3041. INPUT_PORTS_START( checkmat )
  3042.     PORT_START      /* IN0  */
  3043.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER1 )
  3044.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER1 )
  3045.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER1 )
  3046.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
  3047.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER2 )
  3048.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER2 )
  3049.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER2 )
  3050.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  3051.  
  3052.     PORT_START      /* IN1  */
  3053.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER3 )
  3054.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER3 )
  3055.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER3 )
  3056.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER3 )
  3057.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_PLAYER4 )
  3058.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_PLAYER4 )
  3059.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_PLAYER4 )
  3060.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_PLAYER4 )
  3061.  
  3062.     PORT_START      /* IN2 Dips & Coins */
  3063.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) )
  3064.     PORT_DIPSETTING(    0x00, "1 Coin/1 or 2 Playera" )
  3065.     PORT_DIPSETTING(    0x01, "1 Coin/1 to 4 Players" )
  3066.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  3067.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  3068.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  3069.     PORT_DIPNAME( 0x0c, 0x00, "Rounds" )
  3070.     PORT_DIPSETTING(    0x00, "2" )
  3071.     PORT_DIPSETTING(    0x04, "3" )
  3072.     PORT_DIPSETTING(    0x08, "4" )
  3073.     PORT_DIPSETTING(    0x0c, "5" )
  3074.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  3075.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  3076.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  3077.     PORT_DIPNAME( 0x60, 0x00, "Language?" )
  3078.     PORT_DIPSETTING(    0x00, "English?" )
  3079.     PORT_DIPSETTING(    0x20, "German?" )
  3080.     PORT_DIPSETTING(    0x40, "French?" )
  3081.     PORT_DIPSETTING(    0x60, "Spanish?" )
  3082.     PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
  3083.  
  3084.     PORT_START       /* IN3  */
  3085.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
  3086.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  3087.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START3 )
  3088.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START4 )
  3089.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
  3090.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
  3091.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
  3092.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  3093. INPUT_PORTS_END
  3094.  
  3095. static struct MachineDriver machine_driver_checkmat =
  3096. {
  3097.     /* basic machine hardware */
  3098.     {
  3099.         {
  3100.             CPU_8080,
  3101.             2000000,        /* 2 Mhz? */
  3102.             invaders_readmem,invaders_writemem,checkmat_readport,checkmat_writeport,
  3103.             invaders_interrupt,2    /* two interrupts per frame */
  3104.         }
  3105.     },
  3106.     60, DEFAULT_60HZ_VBLANK_DURATION,
  3107.     1,      /* single CPU, no need for interleaving */
  3108.     0,
  3109.  
  3110.     /* video hardware */
  3111.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  3112.     0,      /* no gfxdecodeinfo - bitmapped display */
  3113.     32768+2, 0,        /* leave extra colors for the overlay */
  3114.     init_palette,
  3115.  
  3116.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  3117.     0,
  3118.     invaders_vh_start,
  3119.     invaders_vh_stop,
  3120.     invaders_vh_screenrefresh,
  3121.  
  3122.     /* sound hardware */
  3123.     0, 0, 0, 0
  3124. };
  3125.  
  3126.  
  3127. /*******************************************************/
  3128. /*                                                     */
  3129. /* Taito "Ozma Wars"                                   */
  3130. /*                                                     */
  3131. /*******************************************************/
  3132.  
  3133. INPUT_PORTS_START( ozmawars )
  3134.     PORT_START        /* IN0 */
  3135.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3136.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3137.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3138.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3139.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3140.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3141.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3142.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3143.  
  3144.     PORT_START        /* IN1 */
  3145.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  3146.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  3147.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  3148.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3149.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  3150.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  3151.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  3152.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3153.  
  3154.     PORT_START      /* DSW0 */
  3155.     PORT_DIPNAME( 0x03, 0x00, "Energy" )
  3156.     PORT_DIPSETTING(    0x00, "15000" )
  3157.     PORT_DIPSETTING(    0x01, "20000" )
  3158.     PORT_DIPSETTING(    0x02, "25000" )
  3159.     PORT_DIPSETTING(    0x03, "35000" )
  3160.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  3161.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  3162.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  3163.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  3164.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  3165.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  3166.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  3167.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  3168.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  3169.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )
  3170.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  3171.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  3172.  
  3173.     PORT_START        /* Dummy port for cocktail mode */
  3174.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  3175.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  3176.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  3177. INPUT_PORTS_END
  3178.  
  3179. INPUT_PORTS_START( spaceph )
  3180.     PORT_START      /* IN0 */
  3181.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3182.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3183.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3184.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3185.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3186.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3187.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3188.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3189.  
  3190.     PORT_START      /* IN1 */
  3191.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  3192.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  3193.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  3194.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3195.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  3196.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_2WAY )
  3197.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  3198.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  3199.  
  3200.     PORT_START      /* IN1 */
  3201.     PORT_DIPNAME( 0x03, 0x00, "Fuel" )
  3202.     PORT_DIPSETTING(    0x03, "35000" )
  3203.     PORT_DIPSETTING(    0x02, "25000" )
  3204.     PORT_DIPSETTING(    0x01, "20000" )
  3205.     PORT_DIPSETTING(    0x00, "15000" )
  3206.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  3207.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  3208.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  3209.     PORT_DIPNAME( 0x08, 0x00, "Bonus Fuel" )
  3210.     PORT_DIPSETTING(    0x08, "10000" )
  3211.     PORT_DIPSETTING(    0x00, "15000" )
  3212.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* Fire */
  3213.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* Left */
  3214.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* Right */
  3215.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) )
  3216.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  3217.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  3218. INPUT_PORTS_END
  3219.  
  3220.  
  3221.  
  3222.  
  3223. /*******************************************************/
  3224. /*                                                     */
  3225. /* Emag "Super Invaders"                               */
  3226. /*                                                     */
  3227. /*******************************************************/
  3228.  
  3229. INPUT_PORTS_START( sinvemag )
  3230.     PORT_START      /* IN0 */
  3231.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3232.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3233.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3234.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3235.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3236.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3237.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3238.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3239.  
  3240.     PORT_START      /* IN1 */
  3241.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  3242.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  3243.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  3244.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3245.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  3246.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  3247.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  3248.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  3249.  
  3250.     PORT_START      /* DSW0 */
  3251.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  3252.     PORT_DIPSETTING(    0x00, "3" )
  3253.     PORT_DIPSETTING(    0x01, "4" )
  3254.     PORT_DIPSETTING(    0x02, "5" )
  3255.     PORT_DIPSETTING(    0x03, "6" )
  3256.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  3257.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  3258.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  3259.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )
  3260.     PORT_DIPSETTING(    0x08, "1000" )
  3261.     PORT_DIPSETTING(    0x00, "1500" )
  3262.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  3263.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  3264.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  3265.     PORT_DIPNAME( 0x80, 0x00, "Coin Info" )
  3266.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  3267.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  3268.  
  3269.     PORT_START        /* Dummy port for cocktail mode */
  3270.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  3271.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  3272.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  3273. INPUT_PORTS_END
  3274.  
  3275.  
  3276.  
  3277. /*******************************************************/
  3278. /*                                                     */
  3279. /* Jatre Specter (Taito?)                              */
  3280. /*                                                     */
  3281. /*******************************************************/
  3282.  
  3283. INPUT_PORTS_START( jspecter )
  3284.     PORT_START      /* IN0 */
  3285.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3286.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3287.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3288.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3289.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3290.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3291.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3292.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3293.  
  3294.     PORT_START      /* IN1 */
  3295.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  3296.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  3297.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  3298.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3299.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  3300.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  3301.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  3302.     /* Note: There must have been a toggle switch on the outside of the unit.
  3303.        The difficulty can be set by the player */
  3304.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Difficulty ) )
  3305.     PORT_DIPSETTING(    0x80, "Easy" )
  3306.     PORT_DIPSETTING(    0x00, "Hard" )
  3307.  
  3308.     PORT_START      /* DSW0 */
  3309.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  3310.     PORT_DIPSETTING(    0x00, "3" )
  3311.     PORT_DIPSETTING(    0x01, "4" )
  3312.     PORT_DIPSETTING(    0x02, "5" )
  3313.     PORT_DIPSETTING(    0x03, "6" )
  3314.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  3315.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  3316.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  3317.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) )
  3318.     PORT_DIPSETTING(    0x08, "1000" )
  3319.     PORT_DIPSETTING(    0x00, "1500" )
  3320.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  3321.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  3322.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  3323.     PORT_DIPNAME( 0x80, 0x00, "Coin Info" )
  3324.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  3325.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  3326.  
  3327.     PORT_START        /* Dummy port for cocktail mode */
  3328.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  3329.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  3330.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  3331. INPUT_PORTS_END
  3332.  
  3333.  
  3334. /*******************************************************/
  3335. /*                                                     */
  3336. /* Taito "Balloon Bomber"                              */
  3337. /*                                                     */
  3338. /*******************************************************/
  3339.  
  3340. INPUT_PORTS_START( ballbomb )
  3341.     PORT_START        /* IN0 */
  3342.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3343.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3344.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3345.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3346.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3347.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3348.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3349.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3350.  
  3351.     PORT_START        /* IN1 */
  3352.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  3353.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  3354.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  3355.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3356.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  3357.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  3358.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  3359.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3360.  
  3361.     PORT_START      /* DSW0 */
  3362.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  3363.     PORT_DIPSETTING(    0x00, "3" )
  3364.     PORT_DIPSETTING(    0x01, "4" )
  3365.     PORT_DIPSETTING(    0x02, "5" )
  3366.     PORT_DIPSETTING(    0x03, "6" )
  3367.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  3368.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3369.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  3370.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  3371.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  3372.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3373.  
  3374.     PORT_START        /* Dummy port for cocktail mode */
  3375.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  3376.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  3377.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  3378. INPUT_PORTS_END
  3379.  
  3380.  
  3381. static struct MachineDriver machine_driver_ballbomb =
  3382. {
  3383.     /* basic machine hardware */
  3384.     {
  3385.         {
  3386.             CPU_8080,
  3387.             2000000,        /* 2 Mhz? */
  3388.             invaders_readmem,invaders_writemem,invaders_readport,writeport_2_4,
  3389.             invaders_interrupt,2    /* two interrupts per frame */
  3390.         }
  3391.     },
  3392.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  3393.     1,      /* single CPU, no need for interleaving */
  3394.     init_machine_ballbomb,
  3395.  
  3396.     /* video hardware */
  3397.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  3398.     0,      /* no gfxdecodeinfo - bitmapped display */
  3399.     8, 0,
  3400.     invadpt2_vh_convert_color_prom,
  3401.  
  3402.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  3403.     0,
  3404.     invaders_vh_start,
  3405.     invaders_vh_stop,
  3406.     invaders_vh_screenrefresh,
  3407.  
  3408.     /* sound hardware */
  3409.     0, 0, 0, 0
  3410. };
  3411.  
  3412.  
  3413. INPUT_PORTS_START( spceking )
  3414.     PORT_START      /* IN0 */
  3415.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3416.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3417.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3418.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3419.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3420.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3421.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3422.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3423.  
  3424.     PORT_START        /* IN1 */
  3425.     PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN1 )
  3426.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  3427.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  3428.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  3429.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  3430.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  3431.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  3432.     PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  3433.  
  3434.     PORT_START      /* DSW0 */
  3435.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  3436.     PORT_DIPSETTING(    0x00, "3" )
  3437.     PORT_DIPSETTING(    0x01, "4" )
  3438.     PORT_DIPSETTING(    0x02, "5" )
  3439.     PORT_DIPSETTING(    0x03, "6" )
  3440.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  3441.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  3442.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  3443.     PORT_DIPNAME( 0x08, 0x00, "High Score Preset Mode" )
  3444.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  3445.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  3446.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_PLAYER2 )
  3447.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_PLAYER2 )
  3448.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  3449.     PORT_DIPNAME( 0x80, 0x00, "Coin Info" )
  3450.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  3451.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  3452.  
  3453.     PORT_START        /* Dummy port for cocktail mode */
  3454.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  3455.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  3456.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  3457. INPUT_PORTS_END
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463. ROM_START( invaders )
  3464.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3465.     ROM_LOAD( "invaders.h",   0x0000, 0x0800, 0x734f5ad8 )
  3466.     ROM_LOAD( "invaders.g",   0x0800, 0x0800, 0x6bfaca4a )
  3467.     ROM_LOAD( "invaders.f",   0x1000, 0x0800, 0x0ccead96 )
  3468.     ROM_LOAD( "invaders.e",   0x1800, 0x0800, 0x14e538b0 )
  3469. ROM_END
  3470.  
  3471. ROM_START( earthinv )
  3472.     ROM_REGION( 0x10000, REGION_CPU1 )             /* 64k for code */
  3473.     ROM_LOAD( "earthinv.h",   0x0000, 0x0800, 0x58a750c8 )
  3474.     ROM_LOAD( "earthinv.g",   0x0800, 0x0800, 0xb91742f1 )
  3475.     ROM_LOAD( "earthinv.f",   0x1000, 0x0800, 0x4acbbc60 )
  3476.     ROM_LOAD( "earthinv.e",   0x1800, 0x0800, 0xdf397b12 )
  3477. ROM_END
  3478.  
  3479. ROM_START( spaceatt )
  3480.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3481.     ROM_LOAD( "spaceatt.h",   0x0000, 0x0800, 0xa31d0756 )
  3482.     ROM_LOAD( "spaceatt.g",   0x0800, 0x0800, 0xf41241f7 )
  3483.     ROM_LOAD( "spaceatt.f",   0x1000, 0x0800, 0x4c060223 )
  3484.     ROM_LOAD( "spaceatt.e",   0x1800, 0x0800, 0x7cf6f604 )
  3485. ROM_END
  3486.  
  3487. ROM_START( sinvzen )
  3488.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3489.     ROM_LOAD( "1.bin",        0x0000, 0x0400, 0x9b0da779 )
  3490.     ROM_LOAD( "2.bin",        0x0400, 0x0400, 0x9858ccab )
  3491.     ROM_LOAD( "3.bin",        0x0800, 0x0400, 0xa1cc38b5 )
  3492.     ROM_LOAD( "4.bin",        0x0c00, 0x0400, 0x1f2db7a8 )
  3493.     ROM_LOAD( "5.bin",        0x1000, 0x0400, 0x9b505fcd )
  3494.     ROM_LOAD( "6.bin",        0x1400, 0x0400, 0xde0ca0ae )
  3495.     ROM_LOAD( "7.bin",        0x1800, 0x0400, 0x25a296f6 )
  3496.     ROM_LOAD( "8.bin",        0x1c00, 0x0400, 0xf4bc4a98 )
  3497. ROM_END
  3498.  
  3499. ROM_START( sinvemag )
  3500.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3501.     ROM_LOAD( "sv0h.bin",     0x0000, 0x0400, 0x86bb8cb6 )
  3502.     ROM_LOAD( "emag_si.b",    0x0400, 0x0400, 0xfebe6d1a )
  3503.     ROM_LOAD( "emag_si.c",    0x0800, 0x0400, 0xaafb24f7 )
  3504.     ROM_LOAD( "emag_si.d",    0x1400, 0x0400, 0x68c4b9da )
  3505.     ROM_LOAD( "emag_si.e",    0x1800, 0x0400, 0xc4e80586 )
  3506.     ROM_LOAD( "emag_si.f",    0x1c00, 0x0400, 0x077f5ef2 )
  3507. ROM_END
  3508.  
  3509. ROM_START( alieninv )
  3510.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3511.     ROM_LOAD( "1h.bin",       0x0000, 0x0800, 0xc46df7f4 )
  3512.     ROM_LOAD( "1g.bin",       0x0800, 0x0800, 0x4b1112d6 )
  3513.     ROM_LOAD( "1f.bin",       0x1000, 0x0800, 0Xadca18a5 )
  3514.     ROM_LOAD( "1e.bin",       0x1800, 0x0800, 0x0449CB52 )
  3515. ROM_END
  3516.  
  3517. ROM_START( sitv )
  3518.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3519.     ROM_LOAD( "tv0h.s1",      0x0000, 0x0800, 0xfef18aad )
  3520.     ROM_LOAD( "tv02.rp1",     0x0800, 0x0800, 0x3c759a90 )
  3521.     ROM_LOAD( "tv03.n1",      0x1000, 0x0800, 0x0ad3657f )
  3522.     ROM_LOAD( "tv04.m1",      0x1800, 0x0800, 0xcd2c67f6 )
  3523. ROM_END
  3524.  
  3525. ROM_START( sicv )
  3526.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3527.     ROM_LOAD( "cv17.bin",     0x0000, 0x0800, 0x3dfbe9e6 )
  3528.     ROM_LOAD( "cv18.bin",     0x0800, 0x0800, 0xbc3c82bf )
  3529.     ROM_LOAD( "cv19.bin",     0x1000, 0x0800, 0xd202b41c )
  3530.     ROM_LOAD( "cv20.bin",     0x1800, 0x0800, 0xc74ee7b6 )
  3531.  
  3532.     ROM_REGION( 0x0800, REGION_PROMS )        /* color maps player 1/player 2 */
  3533.     ROM_LOAD( "cv01_1.bin",   0x0000, 0x0400, 0xaac24f34 )
  3534.     ROM_LOAD( "cv02_2.bin",   0x0400, 0x0400, 0x2bdf83a0 )
  3535. ROM_END
  3536.  
  3537. ROM_START( sisv )
  3538.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3539.     ROM_LOAD( "sv0h.bin",     0x0000, 0x0400, 0x86bb8cb6 )
  3540.     ROM_LOAD( "sv02.bin",     0x0400, 0x0400, 0x0e159534 )
  3541.     ROM_LOAD( "invaders.g",   0x0800, 0x0800, 0x6bfaca4a )
  3542.     ROM_LOAD( "invaders.f",   0x1000, 0x0800, 0x0ccead96 )
  3543.     ROM_LOAD( "tv04.m1",      0x1800, 0x0800, 0xcd2c67f6 )
  3544.  
  3545.     ROM_REGION( 0x0800, REGION_PROMS )        /* color maps player 1/player 2 */
  3546.     ROM_LOAD( "cv01_1.bin",   0x0000, 0x0400, 0xaac24f34 )
  3547.     ROM_LOAD( "cv02_2.bin",   0x0400, 0x0400, 0x2bdf83a0 )
  3548. ROM_END
  3549.  
  3550. ROM_START( sisv2 )
  3551.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3552.     ROM_LOAD( "sv0h.bin",     0x0000, 0x0400, 0x86bb8cb6 )
  3553.     ROM_LOAD( "emag_si.b",    0x0400, 0x0400, 0xfebe6d1a )
  3554.     ROM_LOAD( "sv12",         0x0800, 0x0400, 0xa08e7202 )
  3555.     ROM_LOAD( "invaders.f",   0x1000, 0x0800, 0x0ccead96 )
  3556.     ROM_LOAD( "sv13",         0x1800, 0x0400, 0xa9011634 )
  3557.     ROM_LOAD( "sv14",         0x1c00, 0x0400, 0x58730370 )
  3558.  
  3559.     ROM_REGION( 0x0800, REGION_PROMS )        /* color maps player 1/player 2 */
  3560.     ROM_LOAD( "cv01_1.bin",   0x0000, 0x0400, 0xaac24f34 )
  3561.     ROM_LOAD( "cv02_2.bin",   0x0400, 0x0400, 0x2bdf83a0 )
  3562. ROM_END
  3563.  
  3564. ROM_START( spceking )
  3565.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3566.     ROM_LOAD( "invaders.h",   0x0000, 0x0800, 0x734f5ad8 )
  3567.     ROM_LOAD( "spcekng2",     0x0800, 0x0800, 0x96dcdd42 )
  3568.     ROM_LOAD( "spcekng3",     0x1000, 0x0800, 0x95fc96ad )
  3569.     ROM_LOAD( "spcekng4",     0x1800, 0x0800, 0x54170ada )
  3570. ROM_END
  3571.  
  3572. ROM_START( spcewars )
  3573.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3574.     ROM_LOAD( "sanritsu.1",   0x0000, 0x0400, 0xca331679 )
  3575.     ROM_LOAD( "sanritsu.2",   0x0400, 0x0400, 0x48dc791c )
  3576.     ROM_LOAD( "ic35.bin",     0x0800, 0x0800, 0x40c2d55b )
  3577.     ROM_LOAD( "sanritsu.5",   0x1000, 0x0400, 0x77475431 )
  3578.     ROM_LOAD( "sanritsu.6",   0x1400, 0x0400, 0x392ef82c )
  3579.     ROM_LOAD( "sanritsu.7",   0x1800, 0x0400, 0xb3a93df8 )
  3580.     ROM_LOAD( "sanritsu.8",   0x1c00, 0x0400, 0x64fdc3e1 )
  3581.     ROM_LOAD( "sanritsu.9",   0x4000, 0x0400, 0xb2f29601 )
  3582. ROM_END
  3583.  
  3584. ROM_START( spacewr3 )
  3585.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3586.     ROM_LOAD( "ic36.bin",     0x0000, 0x0800, 0x9e30f88a )
  3587.     ROM_LOAD( "ic35.bin",     0x0800, 0x0800, 0x40c2d55b )
  3588.     ROM_LOAD( "ic34.bin",     0x1000, 0x0800, 0xb435f021 )
  3589.     ROM_LOAD( "ic33.bin",     0x1800, 0x0800, 0xcbdc6fe8 )
  3590.     ROM_LOAD( "ic32.bin",     0x4000, 0x0800, 0x1e5a753c )
  3591. ROM_END
  3592.  
  3593. ROM_START( invaderl )
  3594.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3595.     ROM_LOAD( "c01",          0x0000, 0x0400, 0x499f253a )
  3596.     ROM_LOAD( "c02",          0x0400, 0x0400, 0x2d0b2e1f )
  3597.     ROM_LOAD( "c03",          0x0800, 0x0400, 0x03033dc2 )
  3598.     ROM_LOAD( "c07",          0x1000, 0x0400, 0x5a7bbf1f )
  3599.     ROM_LOAD( "c04",          0x1400, 0x0400, 0x455b1fa7 )
  3600.     ROM_LOAD( "c05",          0x1800, 0x0400, 0x40cbef75 )
  3601.     ROM_LOAD( "sv06.bin",     0x1c00, 0x0400, 0x2c68e0b4 )
  3602. ROM_END
  3603.  
  3604. ROM_START( jspecter )
  3605.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3606.     ROM_LOAD( "3305.u6",      0x0000, 0x1000, 0xab211a4f )
  3607.     ROM_LOAD( "3306.u7",      0x1400, 0x1000, 0x0df142a7 )
  3608. ROM_END
  3609.  
  3610. ROM_START( invadpt2 )
  3611.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3612.     ROM_LOAD( "pv.01",        0x0000, 0x0800, 0x7288a511 )
  3613.     ROM_LOAD( "pv.02",        0x0800, 0x0800, 0x097dd8d5 )
  3614.     ROM_LOAD( "pv.03",        0x1000, 0x0800, 0x1766337e )
  3615.     ROM_LOAD( "pv.04",        0x1800, 0x0800, 0x8f0e62e0 )
  3616.     ROM_LOAD( "pv.05",        0x4000, 0x0800, 0x19b505e9 )
  3617.  
  3618.     ROM_REGION( 0x0800, REGION_PROMS )        /* color maps player 1/player 2 */
  3619.     ROM_LOAD( "pv06_1.bin",   0x0000, 0x0400, 0xa732810b )
  3620.     ROM_LOAD( "pv07_2.bin",   0x0400, 0x0400, 0x2c5b91cb )
  3621. ROM_END
  3622.  
  3623. ROM_START( invaddlx )
  3624.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3625.     ROM_LOAD( "invdelux.h",   0x0000, 0x0800, 0xe690818f )
  3626.     ROM_LOAD( "invdelux.g",   0x0800, 0x0800, 0x4268c12d )
  3627.     ROM_LOAD( "invdelux.f",   0x1000, 0x0800, 0xf4aa1880 )
  3628.     ROM_LOAD( "invdelux.e",   0x1800, 0x0800, 0x408849c1 )
  3629.     ROM_LOAD( "invdelux.d",   0x4000, 0x0800, 0xe8d5afcd )
  3630. ROM_END
  3631.  
  3632. ROM_START( moonbase )
  3633.     ROM_REGION( 0x10000, REGION_CPU1 )       /* 64k for code */
  3634.     ROM_LOAD( "pv.01",        0x0000, 0x0800, 0x7288a511 )
  3635.     ROM_LOAD( "pv.02",        0x0800, 0x0800, 0x097dd8d5 )
  3636.     ROM_LOAD( "ze3-5.bin",    0x1000, 0x0400, 0x2b105ed3 )
  3637.     ROM_LOAD( "ze3-6.bin",    0x1400, 0x0400, 0xcb3d6dcb )
  3638.     ROM_LOAD( "ze3-7.bin",    0x1800, 0x0400, 0x774b52c9 )
  3639.     ROM_LOAD( "ze3-8.bin",    0x1c00, 0x0400, 0xe88ea83b )
  3640.     ROM_LOAD( "ze3-9.bin",    0x4000, 0x0400, 0x2dd5adfa )
  3641.     ROM_LOAD( "ze3-10.bin",   0x4400, 0x0400, 0x1e7c22a4 )
  3642. ROM_END
  3643.  
  3644. ROM_START( invad2ct )
  3645.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3646.     ROM_LOAD( "invad2ct.h",   0x0000, 0x0800, 0x51d02a71 )
  3647.     ROM_LOAD( "invad2ct.g",   0x0800, 0x0800, 0x533ac770 )
  3648.     ROM_LOAD( "invad2ct.f",   0x1000, 0x0800, 0xd1799f39 )
  3649.     ROM_LOAD( "invad2ct.e",   0x1800, 0x0800, 0x291c1418 )
  3650.     ROM_LOAD( "invad2ct.b",   0x5000, 0x0800, 0x8d9a07c4 )
  3651.     ROM_LOAD( "invad2ct.a",   0x5800, 0x0800, 0xefdabb03 )
  3652. ROM_END
  3653.  
  3654. ROM_START( invrvnge )
  3655.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3656.     ROM_LOAD( "invrvnge.h",   0x0000, 0x0800, 0xaca41bbb )
  3657.     ROM_LOAD( "invrvnge.g",   0x0800, 0x0800, 0xcfe89dad )
  3658.     ROM_LOAD( "invrvnge.f",   0x1000, 0x0800, 0xe350de2c )
  3659.     ROM_LOAD( "invrvnge.e",   0x1800, 0x0800, 0x1ec8dfc8 )
  3660. ROM_END
  3661.  
  3662. ROM_START( invrvnga )
  3663.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3664.     ROM_LOAD( "5m.bin",       0x0000, 0x0800, 0xb145cb71 )
  3665.     ROM_LOAD( "5n.bin",       0x0800, 0x0800, 0x660e8af3 )
  3666.     ROM_LOAD( "5p.bin",       0x1000, 0x0800, 0x6ec5a9ad )
  3667.     ROM_LOAD( "5r.bin",       0x1800, 0x0800, 0x74516811 )
  3668. ROM_END
  3669.  
  3670. ROM_START( spclaser )
  3671.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3672.     ROM_LOAD( "la01",         0x0000, 0x0800, 0xbedc0078 )
  3673.     ROM_LOAD( "spcewarl.2",   0x0800, 0x0800, 0x43bc65c5 )
  3674.     ROM_LOAD( "la03",         0x1000, 0x0800, 0x1083e9cc )
  3675.     ROM_LOAD( "la04",         0x1800, 0x0800, 0x5116b234 )
  3676. ROM_END
  3677.  
  3678. ROM_START( laser )
  3679.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3680.     ROM_LOAD( "1.u36",        0x0000, 0x0800, 0xb44e2c41 )
  3681.     ROM_LOAD( "2.u35",        0x0800, 0x0800, 0x9876f331 )
  3682.     ROM_LOAD( "3.u34",        0x1000, 0x0800, 0xed79000b )
  3683.     ROM_LOAD( "4.u33",        0x1800, 0x0800, 0x10a160a1 )
  3684. ROM_END
  3685.  
  3686. ROM_START( spcewarl )
  3687.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3688.     ROM_LOAD( "spcewarl.1",   0x0000, 0x0800, 0x1fcd34d2 )
  3689.     ROM_LOAD( "spcewarl.2",   0x0800, 0x0800, 0x43bc65c5 )
  3690.     ROM_LOAD( "spcewarl.3",   0x1000, 0x0800, 0x7820df3a )
  3691.     ROM_LOAD( "spcewarl.4",   0x1800, 0x0800, 0xadc05b8d )
  3692. ROM_END
  3693.  
  3694. ROM_START( galxwars )
  3695.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3696.     ROM_LOAD( "galxwars.0",   0x0000, 0x0400, 0x608bfe7f )
  3697.     ROM_LOAD( "galxwars.1",   0x0400, 0x0400, 0xa810b258 )
  3698.     ROM_LOAD( "galxwars.2",   0x0800, 0x0400, 0x74f31781 )
  3699.     ROM_LOAD( "galxwars.3",   0x0c00, 0x0400, 0xc88f886c )
  3700.     ROM_LOAD( "galxwars.4",   0x4000, 0x0400, 0xae4fe8fb )
  3701.     ROM_LOAD( "galxwars.5",   0x4400, 0x0400, 0x37708a35 )
  3702. ROM_END
  3703.  
  3704. ROM_START( starw )
  3705.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3706.     ROM_LOAD( "roma",         0x0000, 0x0400, 0x60e8993c )
  3707.     ROM_LOAD( "romb",         0x0400, 0x0400, 0xb8060773 )
  3708.     ROM_LOAD( "romc",         0x0800, 0x0400, 0x307ce6b8 )
  3709.     ROM_LOAD( "romd",         0x1400, 0x0400, 0x2b0d0a88 )
  3710.     ROM_LOAD( "rome",         0x1800, 0x0400, 0x5b1c3ad0 )
  3711.     ROM_LOAD( "romf",         0x1c00, 0x0400, 0xc8e42d3d )
  3712. ROM_END
  3713.  
  3714. ROM_START( lrescue )
  3715.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3716.     ROM_LOAD( "lrescue.1",    0x0000, 0x0800, 0x2bbc4778 )
  3717.     ROM_LOAD( "lrescue.2",    0x0800, 0x0800, 0x49e79706 )
  3718.     ROM_LOAD( "lrescue.3",    0x1000, 0x0800, 0x1ac969be )
  3719.     ROM_LOAD( "lrescue.4",    0x1800, 0x0800, 0x782fee3c )
  3720.     ROM_LOAD( "lrescue.5",    0x4000, 0x0800, 0x58fde8bc )
  3721.     ROM_LOAD( "lrescue.6",    0x4800, 0x0800, 0xbfb0f65d )
  3722.  
  3723.     ROM_REGION( 0x0800, REGION_PROMS )        /* color map */
  3724.     ROM_LOAD( "7643-1.cpu",   0x0000, 0x0400, 0x8b2e38de )
  3725.     ROM_RELOAD(                0x0400, 0x0400 )
  3726. ROM_END
  3727.  
  3728. ROM_START( grescue )
  3729.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3730.     ROM_LOAD( "lrescue.1",    0x0000, 0x0800, 0x2bbc4778 )
  3731.     ROM_LOAD( "lrescue.2",    0x0800, 0x0800, 0x49e79706 )
  3732.     ROM_LOAD( "lrescue.3",    0x1000, 0x0800, 0x1ac969be )
  3733.     ROM_LOAD( "grescue.4",    0x1800, 0x0800, 0xca412991 )
  3734.     ROM_LOAD( "grescue.5",    0x4000, 0x0800, 0xa419a4d6 )
  3735.     ROM_LOAD( "lrescue.6",    0x4800, 0x0800, 0xbfb0f65d )
  3736.  
  3737.     ROM_REGION( 0x0800, REGION_PROMS )        /* color map */
  3738.     ROM_LOAD( "7643-1.cpu",   0x0000, 0x0400, 0x8b2e38de )
  3739.     ROM_RELOAD(                0x0400, 0x0400 )
  3740. ROM_END
  3741.  
  3742. ROM_START( desterth )
  3743.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3744.     ROM_LOAD( "36_h.bin",     0x0000, 0x0800, 0xf86923e5 )
  3745.     ROM_LOAD( "35_g.bin",     0x0800, 0x0800, 0x797f440d )
  3746.     ROM_LOAD( "34_f.bin",     0x1000, 0x0800, 0x993d0846 )
  3747.     ROM_LOAD( "33_e.bin",     0x1800, 0x0800, 0x8d155fc5 )
  3748.     ROM_LOAD( "32_d.bin",     0x4000, 0x0800, 0x3f531b6f )
  3749.     ROM_LOAD( "31_c.bin",     0x4800, 0x0800, 0xab019c30 )
  3750.     ROM_LOAD( "42_b.bin",     0x5000, 0x0800, 0xed9dbac6 )
  3751.  
  3752.     ROM_REGION( 0x0800, REGION_PROMS )        /* color map */
  3753.     ROM_LOAD( "7643-1.cpu",   0x0000, 0x0400, 0x8b2e38de )
  3754.     ROM_RELOAD(                0x0400, 0x0400 )
  3755. ROM_END
  3756.  
  3757. ROM_START( cosmicmo )
  3758.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3759.     ROM_LOAD( "cosmicmo.1",   0x0000, 0x0400, 0xd6e4e5da )
  3760.     ROM_LOAD( "cosmicmo.2",   0x0400, 0x0400, 0x8f7988e6 )
  3761.     ROM_LOAD( "cosmicmo.3",   0x0800, 0x0400, 0x2d2e9dc8 )
  3762.     ROM_LOAD( "cosmicmo.4",   0x0c00, 0x0400, 0x26cae456 )
  3763.     ROM_LOAD( "cosmicmo.5",   0x4000, 0x0400, 0xb13f228e )
  3764.     ROM_LOAD( "cosmicmo.6",   0x4400, 0x0400, 0x4ae1b9c4 )
  3765.     ROM_LOAD( "cosmicmo.7",   0x4800, 0x0400, 0x6a13b15b )
  3766. ROM_END
  3767.  
  3768. ROM_START( superinv )
  3769.     ROM_REGION( 0x10000, REGION_CPU1 )             /* 64k for code */
  3770.     ROM_LOAD( "00",           0x0000, 0x0400, 0x7a9b4485 )
  3771.     ROM_LOAD( "01",           0x0400, 0x0400, 0x7c86620d )
  3772.     ROM_LOAD( "02",           0x0800, 0x0400, 0xccaf38f6 )
  3773.     ROM_LOAD( "03",           0x1400, 0x0400, 0x8ec9eae2 )
  3774.     ROM_LOAD( "04",           0x1800, 0x0400, 0x68719b30 )
  3775.     ROM_LOAD( "05",           0x1c00, 0x0400, 0x8abe2466 )
  3776. ROM_END
  3777.  
  3778. ROM_START( rollingc )
  3779.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3780.     ROM_LOAD( "rc01.bin",     0x0000, 0x0400, 0x66fa50bf )
  3781.     ROM_LOAD( "rc02.bin",     0x0400, 0x0400, 0x61c06ae4 )
  3782.     ROM_LOAD( "rc03.bin",     0x0800, 0x0400, 0x77e39fa0 )
  3783.     ROM_LOAD( "rc04.bin",     0x0c00, 0x0400, 0x3fdfd0f3 )
  3784.     ROM_LOAD( "rc05.bin",     0x1000, 0x0400, 0xc26a8f5b )
  3785.     ROM_LOAD( "rc06.bin",     0x1400, 0x0400, 0x0b98dbe5 )
  3786.     ROM_LOAD( "rc07.bin",     0x1800, 0x0400, 0x6242145c )
  3787.     ROM_LOAD( "rc08.bin",     0x1c00, 0x0400, 0xd23c2ef1 )
  3788.     ROM_LOAD( "rc09.bin",     0x4000, 0x0800, 0x2e2c5b95 )
  3789.     ROM_LOAD( "rc10.bin",     0x4800, 0x0800, 0xef94c502 )
  3790.     ROM_LOAD( "rc11.bin",     0x5000, 0x0800, 0xa3164b18 )
  3791.     ROM_LOAD( "rc12.bin",     0x5800, 0x0800, 0x2052f6d9 )
  3792. ROM_END
  3793.  
  3794. ROM_START( boothill )
  3795.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3796.     ROM_LOAD( "romh.cpu",     0x0000, 0x0800, 0x1615d077 )
  3797.     ROM_LOAD( "romg.cpu",     0x0800, 0x0800, 0x65a90420 )
  3798.     ROM_LOAD( "romf.cpu",     0x1000, 0x0800, 0x3fdafd79 )
  3799.     ROM_LOAD( "rome.cpu",     0x1800, 0x0800, 0x374529f4 )
  3800. ROM_END
  3801.  
  3802. ROM_START( schaser )
  3803.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3804.     ROM_LOAD( "rt13.bin",     0x0000, 0x0400, 0x0dfbde68 )
  3805.     ROM_LOAD( "rt14.bin",     0x0400, 0x0400, 0x5a508a25 )
  3806.     ROM_LOAD( "rt15.bin",     0x0800, 0x0400, 0x2ac43a93 )
  3807.     ROM_LOAD( "rt16.bin",     0x0c00, 0x0400, 0xf5583afc )
  3808.     ROM_LOAD( "rt17.bin",     0x1000, 0x0400, 0x51cf1155 )
  3809.     ROM_LOAD( "rt18.bin",     0x1400, 0x0400, 0x3f0fc73a )
  3810.     ROM_LOAD( "rt19.bin",     0x1800, 0x0400, 0xb66ea369 )
  3811.     ROM_LOAD( "rt20.bin",     0x1c00, 0x0400, 0xe3a7466a )
  3812.     ROM_LOAD( "rt21.bin",     0x4000, 0x0400, 0xb368ac98 )
  3813.     ROM_LOAD( "rt22.bin",     0x4400, 0x0400, 0x6e060dfb )
  3814.  
  3815.     ROM_REGION( 0x0400, REGION_PROMS )        /* background color map (missing) */
  3816.     ROM_LOAD( "schaser.prm",  0x0000, 0x0400, 0x00000000 )
  3817. ROM_END
  3818.  
  3819. ROM_START( schasrcv )
  3820.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3821.     ROM_LOAD( "1",               0x0000, 0x0400, 0xbec2b16b )
  3822.     ROM_LOAD( "2",               0x0400, 0x0400, 0x9d25e608 )
  3823.     ROM_LOAD( "3",               0x0800, 0x0400, 0x113d0635 )
  3824.     ROM_LOAD( "4",               0x0c00, 0x0400, 0xf3a43c8d )
  3825.     ROM_LOAD( "5",               0x1000, 0x0400, 0x47c84f23 )
  3826.     ROM_LOAD( "6",               0x1400, 0x0400, 0x02ff2199 )
  3827.     ROM_LOAD( "7",               0x1800, 0x0400, 0x87d06b88 )
  3828.     ROM_LOAD( "8",               0x1c00, 0x0400, 0x6dfaad08 )
  3829.     ROM_LOAD( "9",               0x4000, 0x0400, 0x3d1a2ae3 )
  3830.     ROM_LOAD( "10",              0x4400, 0x0400, 0x037edb99 )
  3831.  
  3832.     ROM_REGION( 0x0800, REGION_PROMS )        /* color maps player 1/player 2 (not used, but they were on the board) */
  3833.     ROM_LOAD( "cv01",         0x0000, 0x0400, 0x037e16ac )
  3834.     ROM_LOAD( "cv02",         0x0400, 0x0400, 0x8263da38 )
  3835. ROM_END
  3836.  
  3837. ROM_START( spcenctr )
  3838.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3839.     ROM_LOAD( "4m33.cpu",     0x0000, 0x0800, 0x7458b2db )
  3840.     ROM_LOAD( "4m32.cpu",     0x0800, 0x0800, 0x1b873788 )
  3841.     ROM_LOAD( "4m31.cpu",     0x1000, 0x0800, 0xd4319c91 )
  3842.     ROM_LOAD( "4m30.cpu",     0x1800, 0x0800, 0x9b9a1a45 )
  3843.     ROM_LOAD( "4m29.cpu",     0x4000, 0x0800, 0x294d52ce )
  3844.     ROM_LOAD( "4m28.cpu",     0x4800, 0x0800, 0xce44c923 )
  3845.     ROM_LOAD( "4m27.cpu",     0x5000, 0x0800, 0x098070ab )
  3846.     ROM_LOAD( "4m26.cpu",     0x5800, 0x0800, 0x7f1d1f44 )
  3847. ROM_END
  3848.  
  3849. ROM_START( clowns )
  3850.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3851.     ROM_LOAD( "h2.cpu",       0x0000, 0x0400, 0xff4432eb )
  3852.     ROM_LOAD( "g2.cpu",       0x0400, 0x0400, 0x676c934b )
  3853.     ROM_LOAD( "f2.cpu",       0x0800, 0x0400, 0x00757962 )
  3854.     ROM_LOAD( "e2.cpu",       0x0c00, 0x0400, 0x9e506a36 )
  3855.     ROM_LOAD( "d2.cpu",       0x1000, 0x0400, 0xd61b5b47 )
  3856.     ROM_LOAD( "c2.cpu",       0x1400, 0x0400, 0x154d129a )
  3857. ROM_END
  3858.  
  3859. ROM_START( gmissile )
  3860.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3861.     ROM_LOAD( "gm_623.h",     0x0000, 0x0800, 0xa3ebb792 )
  3862.     ROM_LOAD( "gm_623.g",     0x0800, 0x0800, 0xa5e740bb )
  3863.     ROM_LOAD( "gm_623.f",     0x1000, 0x0800, 0xda381025 )
  3864.     ROM_LOAD( "gm_623.e",     0x1800, 0x0800, 0xf350146b )
  3865. ROM_END
  3866.  
  3867. ROM_START( seawolf )
  3868.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3869.     ROM_LOAD( "sw0041.h",     0x0000, 0x0400, 0x8f597323 )
  3870.     ROM_LOAD( "sw0042.g",     0x0400, 0x0400, 0xdb980974 )
  3871.     ROM_LOAD( "sw0043.f",     0x0800, 0x0400, 0xe6ffa008 )
  3872.     ROM_LOAD( "sw0044.e",     0x0c00, 0x0400, 0xc3557d6a )
  3873. ROM_END
  3874.  
  3875. ROM_START( gunfight )
  3876.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3877.     ROM_LOAD( "7609h.bin",    0x0000, 0x0400, 0x0b117d73 )
  3878.     ROM_LOAD( "7609g.bin",    0x0400, 0x0400, 0x57bc3159 )
  3879.     ROM_LOAD( "7609f.bin",    0x0800, 0x0400, 0x8049a6bd )
  3880.     ROM_LOAD( "7609e.bin",    0x0c00, 0x0400, 0x773264e2 )
  3881. ROM_END
  3882.  
  3883. ROM_START( 280zzzap )
  3884.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3885.     ROM_LOAD( "zzzaph",       0x0000, 0x0400, 0x1fa86e1c )
  3886.     ROM_LOAD( "zzzapg",       0x0400, 0x0400, 0x9639bc6b )
  3887.     ROM_LOAD( "zzzapf",       0x0800, 0x0400, 0xadc6ede1 )
  3888.     ROM_LOAD( "zzzape",       0x0c00, 0x0400, 0x472493d6 )
  3889.     ROM_LOAD( "zzzapd",       0x1000, 0x0400, 0x4c240ee1 )
  3890.     ROM_LOAD( "zzzapc",       0x1400, 0x0400, 0x6e85aeaf )
  3891. ROM_END
  3892.  
  3893. ROM_START( lupin3 )
  3894.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3895.     ROM_LOAD( "lp12.bin",     0x0000, 0x0800, 0x68a7f47a )
  3896.     ROM_LOAD( "lp13.bin",     0x0800, 0x0800, 0xcae9a17b )
  3897.     ROM_LOAD( "lp14.bin",     0x1000, 0x0800, 0x3553b9e4 )
  3898.     ROM_LOAD( "lp15.bin",     0x1800, 0x0800, 0xacbeef64 )
  3899.     ROM_LOAD( "lp16.bin",     0x4000, 0x0800, 0x19fcdc54 )
  3900.     ROM_LOAD( "lp17.bin",     0x4800, 0x0800, 0x66289ab2 )
  3901.     ROM_LOAD( "lp18.bin",     0x5000, 0x0800, 0x2f07b4ba )
  3902. ROM_END
  3903.  
  3904. ROM_START( polaris )
  3905.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3906.     ROM_LOAD( "ps-01",        0x0000, 0x0800, 0xc04ce5a9 )
  3907.     ROM_LOAD( "ps-09",        0x0800, 0x0800, 0x9a5c8cb2 )
  3908.     ROM_LOAD( "ps-08",        0x1000, 0x0800, 0x8680d7ea )
  3909.     ROM_LOAD( "ps-04",        0x1800, 0x0800, 0x65694948 )
  3910.     ROM_LOAD( "ps-05",        0x4000, 0x0800, 0x772e31f3 )
  3911.     ROM_LOAD( "ps-10",        0x4800, 0x0800, 0x3df77bac )
  3912.  
  3913.     ROM_REGION( 0x0400, REGION_PROMS )        /* background color map */
  3914.     ROM_LOAD( "ps07",         0x0000, 0x0400, 0x164aa05d )
  3915.  
  3916.     ROM_REGION( 0x0100, REGION_USER1 )        /* cloud graphics */
  3917.     ROM_LOAD( "mb7052.2c",    0x0000, 0x0100, 0x2953253b )
  3918. ROM_END
  3919.  
  3920. ROM_START( polarisa )
  3921.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3922.     ROM_LOAD( "ps01-1",       0x0000, 0x0800, 0x7d41007c )
  3923.     ROM_LOAD( "ps-09",        0x0800, 0x0800, 0x9a5c8cb2 )
  3924.     ROM_LOAD( "ps03-1",       0x1000, 0x0800, 0x21f32415 )
  3925.     ROM_LOAD( "ps-04",        0x1800, 0x0800, 0x65694948 )
  3926.     ROM_LOAD( "ps-05",        0x4000, 0x0800, 0x772e31f3 )
  3927.     ROM_LOAD( "ps-10",        0x4800, 0x0800, 0x3df77bac )
  3928.     ROM_LOAD( "ps26",         0x5000, 0x0800, 0x9d5c3d50 )
  3929.  
  3930.     ROM_REGION( 0x0400, REGION_PROMS )        /* background color map */
  3931.     ROM_LOAD( "ps07",         0x0000, 0x0400, 0x164aa05d )
  3932.  
  3933.     ROM_REGION( 0x0100, REGION_USER1 )        /* cloud graphics */
  3934.     ROM_LOAD( "mb7052.2c",    0x0000, 0x0100, 0x2953253b )
  3935. ROM_END
  3936.  
  3937. ROM_START( lagunar )
  3938.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3939.     ROM_LOAD( "lagunar.h",    0x0000, 0x0800, 0x0cd5a280 )
  3940.     ROM_LOAD( "lagunar.g",    0x0800, 0x0800, 0x824cd6f5 )
  3941.     ROM_LOAD( "lagunar.f",    0x1000, 0x0800, 0x62692ca7 )
  3942.     ROM_LOAD( "lagunar.e",    0x1800, 0x0800, 0x20e098ed )
  3943. ROM_END
  3944.  
  3945. ROM_START( m4 )
  3946.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3947.     ROM_LOAD( "m4.h",         0x0000, 0x0800, 0x9ee2a0b5 )
  3948.     ROM_LOAD( "m4.g",         0x0800, 0x0800, 0x0e84b9cb )
  3949.     ROM_LOAD( "m4.f",         0x1000, 0x0800, 0x9ded9956 )
  3950.     ROM_LOAD( "m4.e",         0x1800, 0x0800, 0xb6983238 )
  3951. ROM_END
  3952.  
  3953. ROM_START( phantom2 )
  3954.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3955.     ROM_LOAD( "phantom2.h",   0x0000, 0x0800, 0x0e3c2439 )
  3956.     ROM_LOAD( "phantom2.g",   0x0800, 0x0800, 0xe8df3e52 )
  3957.     ROM_LOAD( "phantom2.f",   0x1000, 0x0800, 0x30e83c6d )
  3958.     ROM_LOAD( "phantom2.e",   0x1800, 0x0800, 0x8c641cac )
  3959.  
  3960.     ROM_REGION( 0x0800, REGION_PROMS )       /* cloud graphics */
  3961.     ROM_LOAD( "p2clouds",     0x0000, 0x0800, 0xdcdd2927 )
  3962. ROM_END
  3963.  
  3964. ROM_START( dogpatch )
  3965.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3966.     ROM_LOAD( "dogpatch.h",   0x0000, 0x0800, 0x74ebdf4d )
  3967.     ROM_LOAD( "dogpatch.g",   0x0800, 0x0800, 0xac246f70 )
  3968.     ROM_LOAD( "dogpatch.f",   0x1000, 0x0800, 0xa975b011 )
  3969.     ROM_LOAD( "dogpatch.e",   0x1800, 0x0800, 0xc12b1f60 )
  3970. ROM_END
  3971.  
  3972. ROM_START( bowler )
  3973.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3974.     ROM_LOAD( "h.cpu",        0x0000, 0x0800, 0x74c29b93 )
  3975.     ROM_LOAD( "g.cpu",        0x0800, 0x0800, 0xca26d8b4 )
  3976.     ROM_LOAD( "f.cpu",        0x1000, 0x0800, 0xba8a0bfa )
  3977.     ROM_LOAD( "e.cpu",        0x1800, 0x0800, 0x4da65a40 )
  3978.     ROM_LOAD( "d.cpu",        0x4000, 0x0800, 0xe7dbc9d9 )
  3979. ROM_END
  3980.  
  3981. ROM_START( shuffle )
  3982.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3983.     ROM_LOAD( "shuffle.h",    0x0000, 0x0800, 0x0d422a18 )
  3984.     ROM_LOAD( "shuffle.g",    0x0800, 0x0800, 0x7db7fcf9 )
  3985.     ROM_LOAD( "shuffle.f",    0x1000, 0x0800, 0xcd04d848 )
  3986.     ROM_LOAD( "shuffle.e",    0x1800, 0x0800, 0x2c118357 )
  3987. ROM_END
  3988.  
  3989. ROM_START( blueshrk )
  3990.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3991.     ROM_LOAD( "blueshrk.h",   0x0000, 0x0800, 0x4ff94187 )
  3992.     ROM_LOAD( "blueshrk.g",   0x0800, 0x0800, 0xe49368fd )
  3993.     ROM_LOAD( "blueshrk.f",   0x1000, 0x0800, 0x86cca79d )
  3994. ROM_END
  3995.  
  3996. ROM_START( einnings )
  3997.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  3998.     ROM_LOAD( "ei.h",         0x0000, 0x0800, 0xeff9c7af )
  3999.     ROM_LOAD( "ei.g",         0x0800, 0x0800, 0x5d1e66cb )
  4000.     ROM_LOAD( "ei.f",         0x1000, 0x0800, 0xed96785d )
  4001.     ROM_LOAD( "ei.e",         0x1800, 0x0800, 0xad096a5d )
  4002.     ROM_LOAD( "ei.b",         0x5000, 0x0800, 0x56b407d4 )
  4003. ROM_END
  4004.  
  4005. ROM_START( dplay )
  4006.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  4007.     ROM_LOAD( "dplay619.h",   0x0000, 0x0800, 0x6680669b )
  4008.     ROM_LOAD( "dplay619.g",   0x0800, 0x0800, 0x0eec7e01 )
  4009.     ROM_LOAD( "dplay619.f",   0x1000, 0x0800, 0x3af4b719 )
  4010.     ROM_LOAD( "dplay619.e",   0x1800, 0x0800, 0x65cab4fc )
  4011. ROM_END
  4012.  
  4013. ROM_START( maze )
  4014.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  4015.     ROM_LOAD( "invaders.h",   0x0000, 0x0800, 0xf2860cff )
  4016.     ROM_LOAD( "invaders.g",   0x0800, 0x0800, 0x65fad839 )
  4017. ROM_END
  4018.  
  4019. ROM_START( tornbase )
  4020.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  4021.     ROM_LOAD( "tb.h",         0x0000, 0x0800, 0x653f4797 )
  4022.     ROM_LOAD( "tb.g",         0x0800, 0x0800, BADCRC(0x33468006) )    /* this ROM fails the test */
  4023.     ROM_LOAD( "tb.f",         0x1000, 0x0800, 0x215e070c )
  4024. ROM_END
  4025.  
  4026. ROM_START( checkmat )
  4027.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  4028.     ROM_LOAD( "checkmat.h",   0x0000, 0x0400, 0x3481a6d1 )
  4029.     ROM_LOAD( "checkmat.g",   0x0400, 0x0400, 0xdf5fa551 )
  4030.     ROM_LOAD( "checkmat.f",   0x0800, 0x0400, 0x25586406 )
  4031.     ROM_LOAD( "checkmat.e",   0x0c00, 0x0400, 0x59330d84 )
  4032. ROM_END
  4033.  
  4034. ROM_START( desertgu )
  4035.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  4036.     ROM_LOAD( "desertgu.h",   0x0000, 0x0800, 0xc0030d7c )
  4037.     ROM_LOAD( "desertgu.g",   0x0800, 0x0800, 0x1ddde10b )
  4038.     ROM_LOAD( "desertgu.f",   0x1000, 0x0800, 0x808e46f1 )
  4039.     ROM_LOAD( "desertgu.e",   0x1800, 0x0800, 0xac64dc62 )
  4040. ROM_END
  4041.  
  4042. ROM_START( ozmawars )
  4043.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  4044.     ROM_LOAD( "mw01",         0x0000, 0x0800, 0x31f4397d )
  4045.     ROM_LOAD( "mw02",         0x0800, 0x0800, 0xd8e77c62 )
  4046.     ROM_LOAD( "mw03",         0x1000, 0x0800, 0x3bfa418f )
  4047.     ROM_LOAD( "mw04",         0x1800, 0x0800, 0xe190ce6c )
  4048.     ROM_LOAD( "mw05",         0x4000, 0x0800, 0x3bc7d4c7 )
  4049.     ROM_LOAD( "mw06",         0x4800, 0x0800, 0x99ca2eae )
  4050. ROM_END
  4051.  
  4052. ROM_START( solfight )
  4053.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  4054.     ROM_LOAD( "solfight.m",   0x0000, 0x0800, 0xa4f2814e )
  4055.     ROM_LOAD( "solfight.n",   0x0800, 0x0800, 0x5657ec07 )
  4056.     ROM_LOAD( "solfight.p",   0x1000, 0x0800, 0xef9ce96d )
  4057.     ROM_LOAD( "solfight.r",   0x1800, 0x0800, 0x4f1ef540 )
  4058.     ROM_LOAD( "mw05",         0x4000, 0x0800, 0x3bc7d4c7 )
  4059.     ROM_LOAD( "solfight.t",   0x4800, 0x0800, 0x3b6fb206 )
  4060. ROM_END
  4061.  
  4062. ROM_START( spaceph )
  4063.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  4064.     ROM_LOAD( "sv01.bin",     0x0000, 0x0400, 0xde84771d )
  4065.     ROM_LOAD( "sv02.bin",     0x0400, 0x0400, 0x957fc661 )
  4066.     ROM_LOAD( "sv03.bin",     0x0800, 0x0400, 0xdbda38b9 )
  4067.     ROM_LOAD( "sv04.bin",     0x0c00, 0x0400, 0xf51544a5 )
  4068.     ROM_LOAD( "sv05.bin",     0x1000, 0x0400, 0x98d02683 )
  4069.     ROM_LOAD( "sv06.bin",     0x1400, 0x0400, 0x4ec390fd )
  4070.     ROM_LOAD( "sv07.bin",     0x1800, 0x0400, 0x170862fd )
  4071.     ROM_LOAD( "sv08.bin",     0x1c00, 0x0400, 0x511b12cf )
  4072.     ROM_LOAD( "sv09.bin",     0x4000, 0x0400, 0xaf1cd1af )
  4073.     ROM_LOAD( "sv10.bin",     0x4400, 0x0400, 0x31b7692e )
  4074.     ROM_LOAD( "sv11.bin",     0x4800, 0x0400, 0x50257351 )
  4075.     ROM_LOAD( "sv12.bin",     0x4c00, 0x0400, 0xa2a3366a )
  4076. ROM_END
  4077.  
  4078. ROM_START( ballbomb )
  4079.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  4080.     ROM_LOAD( "tn01",         0x0000, 0x0800, 0x551585b5 )
  4081.     ROM_LOAD( "tn02",         0x0800, 0x0800, 0x7e1f734f )
  4082.     ROM_LOAD( "tn03",         0x1000, 0x0800, 0xd93e20bc )
  4083.     ROM_LOAD( "tn04",         0x1800, 0x0800, 0xd0689a22 )
  4084.     ROM_LOAD( "tn05-1",       0x4000, 0x0800, 0x5d5e94f1 )
  4085.  
  4086.     ROM_REGION( 0x0800, REGION_PROMS )        /* color maps player 1/player 2 */
  4087.     ROM_LOAD( "tn06",         0x0000, 0x0400, 0x7ec554c4 )
  4088.     ROM_LOAD( "tn07",         0x0400, 0x0400, 0xdeb0ac82 )
  4089. ROM_END
  4090.  
  4091. ROM_START( yosakdon )
  4092.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  4093.     ROM_LOAD( "yd1.bin",       0x0000, 0x0400, 0x607899c9 )
  4094.     ROM_LOAD( "yd2.bin",       0x0400, 0x0400, 0x78336df4 )
  4095.     ROM_LOAD( "yd3.bin",       0x0800, 0x0400, 0xc5af6d52 )
  4096.     ROM_LOAD( "yd4.bin",       0x0c00, 0x0400, 0xdca8064f )
  4097.     ROM_LOAD( "yd5.bin",       0x1400, 0x0400, 0x38804ff1 )
  4098.     ROM_LOAD( "yd6.bin",       0x1800, 0x0400, 0x988d2362 )
  4099.     ROM_LOAD( "yd7.bin",       0x1c00, 0x0400, 0x2744e68b )
  4100. ROM_END
  4101.  
  4102. ROM_START( sheriff )
  4103.     ROM_REGION( 0x10000, REGION_CPU1 )             /* 64k for code */
  4104.     ROM_LOAD( "f1",           0x0000, 0x0400, 0xe79df6e8 )
  4105.     ROM_LOAD( "f2",           0x0400, 0x0400, 0xda67721a )
  4106.     ROM_LOAD( "g1",           0x0800, 0x0400, 0x3fb7888e )
  4107.     ROM_LOAD( "g2",           0x0c00, 0x0400, 0x585fcfee )
  4108.     ROM_LOAD( "h1",           0x1000, 0x0400, 0xe59eab52 )
  4109.     ROM_LOAD( "h2",           0x1400, 0x0400, 0x79e69a6a )
  4110.     ROM_LOAD( "i1",           0x1800, 0x0400, 0xdda7d1e8 )
  4111.     ROM_LOAD( "i2",           0x1c00, 0x0400, 0x5c5f3f86 )
  4112.     ROM_LOAD( "j1",           0x2000, 0x0400, 0x0aa8b79a )
  4113.  
  4114.     ROM_REGION( 0x1000, REGION_CPU2 )    /* Sound 8035 + 76477 Sound Generator */
  4115.     ROM_LOAD( "basnd.u2",     0x0000, 0x0400, 0x75731745 )
  4116. ROM_END
  4117.  
  4118. ROM_START( bandido )
  4119.     ROM_REGION( 0x10000, REGION_CPU1 )             /* 64k for code */
  4120.     ROM_LOAD( "baf1-3",       0x0000, 0x0400, 0xaec94829 )
  4121.     ROM_LOAD( "f2",           0x0400, 0x0400, 0xda67721a )
  4122.     ROM_LOAD( "g1",           0x0800, 0x0400, 0x3fb7888e )
  4123.     ROM_LOAD( "g2",           0x0c00, 0x0400, 0x585fcfee )
  4124.     ROM_LOAD( "bah1-1",       0x1000, 0x0400, 0x5cb63677 )
  4125.     ROM_LOAD( "h2",           0x1400, 0x0400, 0x79e69a6a )
  4126.     ROM_LOAD( "i1",           0x1800, 0x0400, 0xdda7d1e8 )
  4127.     ROM_LOAD( "i2",           0x1c00, 0x0400, 0x5c5f3f86 )
  4128.     ROM_LOAD( "j1",           0x2000, 0x0400, 0x0aa8b79a )
  4129.     ROM_LOAD( "baj2-2",       0x2400, 0x0400, 0xa10b848a )
  4130.  
  4131.     ROM_REGION( 0x1000, REGION_CPU2 )    /* Sound 8035 + 76477 Sound Generator */
  4132.     ROM_LOAD( "basnd.u2",     0x0000, 0x0400, 0x75731745 )
  4133. ROM_END
  4134.  
  4135. ROM_START( helifire )
  4136.     ROM_REGION( 0x10000, REGION_CPU1 )             /* 64k for code */
  4137.     ROM_LOAD( "tub.f1b",      0x0000, 0x0400, 0x032f89ca )
  4138.     ROM_LOAD( "tub.f2b",      0x0400, 0x0400, 0x2774e70f )
  4139.     ROM_LOAD( "tub.g1b",      0x0800, 0x0400, 0xb5ad6e8a )
  4140.     ROM_LOAD( "tub.g2b",      0x0c00, 0x0400, 0x5e015bf4 )
  4141.     ROM_LOAD( "tub.h1b",      0x1000, 0x0400, 0x23bb4e5a )
  4142.     ROM_LOAD( "tub.h2b",      0x1400, 0x0400, 0x358227c6 )
  4143.     ROM_LOAD( "tub.i1b",      0x1800, 0x0400, 0x0c679f44 )
  4144.     ROM_LOAD( "tub.i2b",      0x1c00, 0x0400, 0xd8b7a398 )
  4145.     ROM_LOAD( "tub.j1b",      0x2000, 0x0400, 0x98ef24db )
  4146.     ROM_LOAD( "tub.j2b",      0x2400, 0x0400, 0x5e2b5877 )
  4147.  
  4148.     ROM_REGION( 0x1000, REGION_CPU2 )    /* Sound 8035 + 76477 Sound Generator */
  4149.     ROM_LOAD( "tub.snd",      0x0000, 0x0400, 0x9d77a31f )
  4150. ROM_END
  4151.  
  4152. ROM_START( helifira )
  4153.     ROM_REGION( 0x10000, REGION_CPU1 )             /* 64k for code */
  4154.     ROM_LOAD( "f1a.bin",      0x0000, 0x0400, 0x92c9d6c1 )
  4155.     ROM_LOAD( "f2a.bin",      0x0400, 0x0400, 0xa264dde8 )
  4156.     ROM_LOAD( "tub.g1b",      0x0800, 0x0400, 0xb5ad6e8a )
  4157.     ROM_LOAD( "g2a.bin",      0x0c00, 0x0400, 0xa987ebcd )
  4158.     ROM_LOAD( "h1a.bin",      0x1000, 0x0400, 0x25abcaf0 )
  4159.     ROM_LOAD( "tub.h2b",      0x1400, 0x0400, 0x358227c6 )
  4160.     ROM_LOAD( "tub.i1b",      0x1800, 0x0400, 0x0c679f44 )
  4161.     ROM_LOAD( "i2a.bin",      0x1c00, 0x0400, 0x296610fd )
  4162.     ROM_LOAD( "tub.j1b",      0x2000, 0x0400, 0x98ef24db )
  4163.     ROM_LOAD( "tub.j2b",      0x2400, 0x0400, 0x5e2b5877 )
  4164.  
  4165.     ROM_REGION( 0x1000, REGION_CPU2 )    /* Sound 8035 + 76477 Sound Generator */
  4166.     ROM_LOAD( "tub.snd",      0x0000, 0x0400, 0x9d77a31f )
  4167. ROM_END
  4168.  
  4169. ROM_START( spacefev )
  4170.     ROM_REGION( 0x10000, REGION_CPU1 )             /* 64k for code */
  4171.     ROM_LOAD( "tsf.f1",       0x0000, 0x0400, 0x35f295bd )
  4172.     ROM_LOAD( "tsf.f2",       0x0400, 0x0400, 0x0c633f4c )
  4173.     ROM_LOAD( "tsf.g1",       0x0800, 0x0400, 0xf3d851cb )
  4174.     ROM_LOAD( "tsf.g2",       0x0c00, 0x0400, 0x1faef63a )
  4175.     ROM_LOAD( "tsf.h1",       0x1000, 0x0400, 0xb365389d )
  4176.     ROM_LOAD( "tsf.h2",       0x1400, 0x0400, 0xa36c61c9 )
  4177.     ROM_LOAD( "tsf.i1",       0x1800, 0x0400, 0xd4f3b50d )
  4178.  
  4179.     ROM_REGION( 0x1000, REGION_CPU2 )    /* Sound 8035 + 76477 Sound Generator */
  4180.     ROM_LOAD( "basnd.u2",     0x0000, 0x0400, 0x75731745 )
  4181. ROM_END
  4182.  
  4183. ROM_START( sfeverbw )
  4184.     ROM_REGION( 0x10000, REGION_CPU1 )             /* 64k for code */
  4185.     ROM_LOAD( "spacefev.f1",  0x0000, 0x0400, 0xb8887351 )
  4186.     ROM_LOAD( "spacefev.f2",  0x0400, 0x0400, 0xcda933a7 )
  4187.     ROM_LOAD( "spacefev.g1",  0x0800, 0x0400, 0xde17578a )
  4188.     ROM_LOAD( "spacefev.g2",  0x0c00, 0x0400, 0xf1a90948 )
  4189.     ROM_LOAD( "spacefev.h1",  0x1000, 0x0400, 0xeefb4273 )
  4190.     ROM_LOAD( "spacefev.h2",  0x1400, 0x0400, 0xe91703e8 )
  4191.     ROM_LOAD( "spacefev.i1",  0x1800, 0x0400, 0x41e18df9 )
  4192.     ROM_LOAD( "spacefev.i2",  0x1c00, 0x0400, 0xeff9f82d )
  4193.  
  4194.     ROM_REGION( 0x1000, REGION_CPU2 )    /* Sound 8035 + 76477 Sound Generator */
  4195.     ROM_LOAD( "basnd.u2",     0x0000, 0x0400, 0x75731745 )
  4196. ROM_END
  4197.  
  4198.  
  4199. /* Midway games */
  4200.  
  4201. /* board #            rom       parent    machine   inp       init (overlay/color hardware setup) */
  4202.  
  4203. /* 596 */ GAMEX(1976, seawolf,  0,        seawolf,  seawolf,  seawolf,  ROT0,       "Midway", "Sea Wolf", GAME_NO_SOUND )
  4204. /* 597 */ GAMEX(1975, gunfight, 0,        gunfight, gunfight, 8080bw,   ROT0,       "Midway", "Gun Fight", GAME_NO_SOUND )
  4205. /* 605 */ GAMEX(1976, tornbase, 0,        tornbase, tornbase, 8080bw,    ROT0,       "Midway", "Tornado Baseball", GAME_NO_SOUND )
  4206. /* 610 */ GAMEX(1976, 280zzzap, 0,        280zzzap, 280zzzap, 8080bw,    ROT0,       "Midway", "Datsun 280 Zzzap", GAME_NO_SOUND )
  4207. /* 611 */ GAMEX(1976, maze,     0,        tornbase, maze,     8080bw,    ROT0,       "Midway", "Amazing Maze", GAME_NO_SOUND )
  4208. /* 612 */ GAME( 1977, boothill, 0,        boothill, boothill, 8080bw,   ROT0,       "Midway", "Boot Hill" )
  4209. /* 615 */ GAMEX(1977, checkmat, 0,        checkmat, checkmat, 8080bw,    ROT0,       "Midway", "Checkmate", GAME_NO_SOUND )
  4210. /* 618 */ GAMEX(1977, desertgu, 0,        desertgu, desertgu, desertgu,    ROT0,       "Midway", "Desert Gun", GAME_NO_SOUND )
  4211. /* 619 */ GAMEX(1977, dplay,    einnings, m4,       einnings, 8080bw,    ROT0,       "Midway", "Double Play", GAME_NO_SOUND )
  4212. /* 622 */ GAMEX(1977, lagunar,  0,        280zzzap, lagunar,  8080bw,   ROT90,      "Midway", "Laguna Racer", GAME_NO_SOUND )
  4213. /* 623 */ GAMEX(1977, gmissile, 0,        m4,       gmissile, 8080bw,   ROT0,       "Midway", "Guided Missile", GAME_NO_SOUND )
  4214. /* 626 */ GAMEX(1977, m4,       0,        m4,       m4,       8080bw,   ROT0,       "Midway", "M-4", GAME_NO_SOUND )
  4215. /* 630 */ GAMEX(1978, clowns,   0,        clowns,   clowns,   8080bw,   ROT0,       "Midway", "Clowns", GAME_NO_SOUND )
  4216. /* 640                                                                                "Midway", "Space Walk" */
  4217. /* 642 */ GAMEX(1978, einnings, 0,        m4,       einnings, 8080bw,    ROT0,       "Midway", "Extra Innings", GAME_NO_SOUND )
  4218. /* 643 */ GAMEX(1978, shuffle,  0,        shuffle,  shuffle,  8080bw,    ROT90,      "Midway", "Shuffleboard", GAME_NO_SOUND )
  4219. /* 644 */ GAMEX(1977, dogpatch, 0,        clowns,   dogpatch, 8080bw,   ROT0,       "Midway", "Dog Patch", GAME_NO_SOUND )
  4220. /* 645 */ GAMEX(1980, spcenctr, 0,        spcenctr, spcenctr, spcenctr,    ROT0_16BIT,    "Midway", "Space Encounters", GAME_NO_SOUND )
  4221. /* 652 */ GAMEX(1979, phantom2, 0,        m4,       phantom2, phantom2, ROT0,       "Midway", "Phantom II", GAME_NO_SOUND )
  4222. /* 730 */ GAMEX(1978, bowler,   0,        bowler,   bowler,   8080bw,    ROT90,      "Midway", "4 Player Bowling", GAME_NO_SOUND )
  4223. /* 739 */ GAME( 1978, invaders, 0,        invaders, invaders, invaders, ROT270,     "Midway", "Space Invaders" )
  4224. /* 742 */ GAMEX(1978, blueshrk, 0,        blueshrk, blueshrk, blueshrk, ROT0,       "Midway", "Blue Shark", GAME_NO_SOUND )
  4225. /* 851 */ GAME( 1980, invad2ct, 0,        invad2ct, invad2ct, invad2ct, ROT90,      "Midway", "Space Invaders II (Midway, cocktail)" )
  4226. /* 852 */ GAME( 1980, invaddlx, invadpt2, invaders, invadpt2, invaddlx, ROT270,     "Midway", "Space Invaders Deluxe" )
  4227. /* 870                                                                                "Midway", "Space Invaders Deluxe (cocktail) "*/
  4228.  
  4229. /* Taito games */
  4230.  
  4231.           GAME( 1978, sitv,     invaders, invaders, sitv,     invaders, ROT270,     "Taito", "Space Invaders (TV Version)" )
  4232.           GAME( 1979, sicv,     invaders, invadpt2, invaders, invadpt2, ROT270,     "Taito", "Space Invaders (CV Version)" )
  4233.           GAME( 1978, sisv,     invaders, invadpt2, invaders, invadpt2, ROT270,     "Taito", "Space Invaders (SV Version)" )
  4234.           GAME( 1978, sisv2,    invaders, invadpt2, invaders, invadpt2, ROT270,     "Taito", "Space Invaders (SV Version 2)" )
  4235.           GAME( 1979, galxwars, 0,        invaders, galxwars, invaders, ROT270,     "Taito", "Galaxy Wars" )
  4236.           GAME( 1979, starw,    galxwars, invaders, galxwars, invaders, ROT270,     "bootleg", "Star Wars" )
  4237.           GAME( 1979, lrescue,  0,        invadpt2, lrescue,  invadpt2, ROT270,     "Taito", "Lunar Rescue" )
  4238.           GAME( 1979, grescue,  lrescue,  invadpt2, lrescue,  invadpt2, ROT270,     "Taito (Universal license?)", "Galaxy Rescue" )
  4239.           GAME( 1979, desterth, lrescue,  invadpt2, invrvnge, invadpt2, ROT270,     "bootleg", "Destination Earth" )
  4240.           GAME( 1980, invadpt2, 0,        invadpt2, invadpt2, invadpt2, ROT270,     "Taito", "Space Invaders Part II (Taito)" )
  4241.           GAMEX(1980, schaser,  0,        schaser,  schaser,  schaser,  ROT270,     "Taito", "Space Chaser", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS )
  4242.           GAMEX(1979, schasrcv, schaser,  lupin3,   schasrcv, schaser,  ROT270,     "Taito", "Space Chaser (CV version)", GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL )
  4243.           GAMEX(1980, lupin3,   0,        lupin3,   lupin3,   lupin3,   ROT270,     "Taito", "Lupin III", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  4244.           GAMEX(1980, polaris,  0,        polaris,  polaris,  polaris,  ROT270,     "Taito", "Polaris (set 1)", GAME_NO_SOUND )
  4245.           GAMEX(1980, polarisa, polaris,  polaris,  polaris,  polaris,  ROT270,     "Taito", "Polaris (set 2)", GAME_NO_SOUND )
  4246.           GAME( 1980, ballbomb, 0,        ballbomb, ballbomb, invadpt2, ROT270,     "Taito", "Balloon Bomber" )
  4247.  
  4248. /* Nintendo games */
  4249.  
  4250.           GAMEX(1980, sheriff,  0,        sheriff,  sheriff,  8080bw,    ROT270,     "Nintendo", "Sheriff", GAME_IMPERFECT_SOUND )
  4251.           GAMEX(1980, bandido,  sheriff,  sheriff,  bandido,  8080bw,    ROT270,     "Exidy", "Bandido", GAME_IMPERFECT_SOUND )
  4252.           GAMEX(1980, helifire, 0,        helifire, helifire, helifire,    ROT270,     "Nintendo", "HeliFire (revision B)", GAME_NO_SOUND )
  4253.           GAMEX(1980, helifira, helifire, helifire, helifire, helifire,    ROT270,     "Nintendo", "HeliFire (revision A)", GAME_NO_SOUND )
  4254.           GAMEX(1980, spacefev, 0,        sheriff,  spacefev, 8080bw,    ROT270,     "Nintendo", "Space Fever (color)", GAME_IMPERFECT_SOUND )
  4255.           GAMEX(1980, sfeverbw, 0,        sheriff,  spacefev, 8080bw,    ROT270,     "Nintendo", "Space Fever (black and white)", GAME_IMPERFECT_SOUND )
  4256.  
  4257. /* Misc. manufacturers */
  4258.  
  4259.           GAME( 1980, earthinv, invaders, invaders, earthinv, invaders, ROT270,     "bootleg", "Super Earth Invasion" )
  4260.           GAME( 1980, spaceatt, invaders, invaders, spaceatt, invaders, ROT270,     "Zenitone-Microsec Ltd", "Space Attack II" )
  4261.           GAME( ????, sinvzen,  invaders, invaders, spaceatt, invaders, ROT270,     "Zenitone-Microsec Ltd", "Super Invaders (Zenitone-Microsec)" )
  4262.           GAME( ????, sinvemag, invaders, invaders, sinvemag, invaders, ROT270,     "bootleg", "Super Invaders (EMAG)" )
  4263.           GAME( ????, alieninv, invaders, invaders, earthinv, invaders, ROT270,     "bootleg", "Alien Invasion Part II" )
  4264.           GAME( 1978, spceking, invaders, invaders, spceking, invaders, ROT270,     "Leijac (Konami)","Space King" )
  4265.           GAME( 1978, spcewars, invaders, invaders, invadpt2, invaders, ROT270,     "Sanritsu", "Space War (Sanritsu)" )
  4266.           GAME( 1978, spacewr3, invaders, invaders, spacewr3, invaders, ROT270,     "bootleg", "Space War Part 3" )
  4267.           GAME( 1978, invaderl, invaders, invaders, invaders, invaders, ROT270,     "bootleg", "Space Invaders (Logitec)" )
  4268.           GAME( 1979, jspecter, invaders, invaders, jspecter, invaders, ROT270,     "Jatre", "Jatre Specter" )
  4269.           GAME( 1979, cosmicmo, invaders, invaders, cosmicmo, invaders, ROT270,     "Universal", "Cosmic Monsters" )
  4270.           GAME( ????, superinv, invaders, invaders, invaders, invaders, ROT270,     "bootleg", "Super Invaders" )
  4271.           GAME( ????, moonbase, invadpt2, invaders, invadpt2, invaddlx, ROT270,     "Nichibutsu", "Moon Base" )
  4272.           GAMEX(????, invrvnge, 0,        tornbase, invrvnge, invrvnge, ROT270,     "Zenitone Microsec", "Invader's Revenge",  GAME_NO_SOUND )
  4273.           GAMEX(????, invrvnga, invrvnge, tornbase, invrvnge, invrvnge, ROT270,     "Zenitone Microsec (Dutchford license)", "Invader's Revenge (Dutchford)", GAME_NO_SOUND )
  4274.           GAME( 1980, spclaser, 0,        invaders, spclaser, invaddlx, ROT270,     "Game Plan, Inc. (Taito)", "Space Laser" )
  4275.           GAME( 1980, laser,    spclaser, invaders, spclaser, invaddlx, ROT270,     "<unknown>", "Laser" )
  4276.           GAME( 1979, spcewarl, spclaser, invaders, spclaser, invaddlx, ROT270,     "Leijac (Konami)","Space War (Leijac)" )
  4277.           GAMEX(1979, rollingc, 0,        rollingc, rollingc, rollingc, ROT270,     "Nichibutsu", "Rolling Crash / Moon Base", GAME_NO_SOUND )
  4278.           GAME( 1979, ozmawars, 0,        invaders, ozmawars, 8080bw,   ROT270,     "SNK", "Ozma Wars" )
  4279.           GAME( 1979, solfight, ozmawars, invaders, ozmawars, 8080bw,   ROT270,     "bootleg", "Solar Fight" )
  4280.           GAME( 1979, spaceph,  ozmawars, invaders, spaceph,  8080bw,   ROT270,     "Zilec Games", "Space Phantoms" )
  4281.           GAMEX(1979, yosakdon, 0,        tornbase, lrescue,  8080bw,   ROT270,     "bootleg", "Yosaku To Donbee (bootleg)", GAME_NO_SOUND )
  4282.